aboutsummaryrefslogtreecommitdiff
path: root/code/utils
diff options
context:
space:
mode:
Diffstat (limited to 'code/utils')
-rw-r--r--code/utils/config.py23
-rw-r--r--code/utils/media_api_key.py28
2 files changed, 32 insertions, 19 deletions
diff --git a/code/utils/config.py b/code/utils/config.py
index d411653..f319792 100644
--- a/code/utils/config.py
+++ b/code/utils/config.py
@@ -4,7 +4,6 @@ import os
import validators
import sys
import discord
-import openai
import logging
from colorlog import ColoredFormatter
@@ -31,7 +30,6 @@ FEEDBACK_CHANNEL_ID = None
BUG_CHANNEL_ID = None
SPOTIFY_CLIENT_ID = None
SPOTIFY_CLIENT_SECRET = None
-APPLE_MUSIC_KEY = None
OPENAI_API_KEY = None
LAVALINK_HOST = None
LAVALINK_PORT = None
@@ -71,10 +69,6 @@ def load_config():
"SPOTIFY_CLIENT_SECRET": "",
}
- config["APPLE_MUSIC"] = {
- "APPLE_MUSIC_KEY": "",
- }
-
config["OPENAI"] = {
"OPENAI_API_KEY": "",
}
@@ -101,7 +95,7 @@ Validate all of the options in the config.ini file.
def validate_config(file_contents):
- global TOKEN, BOT_COLOR, BOT_INVITE_LINK, FEEDBACK_CHANNEL_ID, BUG_CHANNEL_ID, SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET, APPLE_MUSIC_KEY, OPENAI_API_KEY, LAVALINK_HOST, LAVALINK_PORT, LAVALINK_PASSWORD
+ global TOKEN, BOT_COLOR, BOT_INVITE_LINK, FEEDBACK_CHANNEL_ID, BUG_CHANNEL_ID, SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET, OPENAI_API_KEY, LAVALINK_HOST, LAVALINK_PORT, LAVALINK_PASSWORD
config = configparser.ConfigParser()
config.read_string(file_contents)
@@ -111,7 +105,7 @@ def validate_config(file_contents):
errors = 0
# Make sure all sections are present
- if ["BOT_INFO", "SPOTIFY", "APPLE_MUSIC", "OPENAI", "LAVALINK"] != config.sections():
+ if ["BOT_INFO", "SPOTIFY", "OPENAI", "LAVALINK"] != config.sections():
sys.exit(
LOG.critical(
"Missing sections in config.ini file. Delete the file and re-run the bot to generate a blank config.ini file."
@@ -132,13 +126,6 @@ def validate_config(file_contents):
)
)
- if ["apple_music_key"] != config.options("APPLE_MUSIC"):
- sys.exit(
- LOG.critical(
- "Missing options in APPLE_MUSIC section of config.ini file. Delete the file and re-run the bot to generate a blank config.ini file."
- )
- )
-
if ["openai_api_key"] != config.options("OPENAI"):
sys.exit(
LOG.critical(
@@ -187,7 +174,6 @@ def validate_config(file_contents):
TOKEN = config["BOT_INFO"]["TOKEN"]
SPOTIFY_CLIENT_ID = config["SPOTIFY"]["SPOTIFY_CLIENT_ID"]
SPOTIFY_CLIENT_SECRET = config["SPOTIFY"]["SPOTIFY_CLIENT_SECRET"]
- APPLE_MUSIC_KEY = config["APPLE_MUSIC"]["APPLE_MUSIC_KEY"]
OPENAI_API_KEY = config["OPENAI"]["OPENAI_API_KEY"]
LAVALINK_HOST = config["LAVALINK"]["HOST"]
LAVALINK_PORT = config["LAVALINK"]["PORT"]
@@ -207,7 +193,7 @@ Validate all of the environment variables.
def validate_env_vars():
- global TOKEN, BOT_COLOR, BOT_INVITE_LINK, FEEDBACK_CHANNEL_ID, BUG_CHANNEL_ID, SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET, APPLE_MUSIC_KEY, OPENAI_API_KEY, LAVALINK_HOST, LAVALINK_PORT, LAVALINK_PASSWORD
+ global TOKEN, BOT_COLOR, BOT_INVITE_LINK, FEEDBACK_CHANNEL_ID, BUG_CHANNEL_ID, SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET, OPENAI_API_KEY, LAVALINK_HOST, LAVALINK_PORT, LAVALINK_PASSWORD
hex_pattern_one = "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"
hex_pattern_two = "^([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"
@@ -215,7 +201,7 @@ def validate_env_vars():
errors = 0
# Make sure all required variables are present in the environment
- required_vars = ["TOKEN", "BOT_COLOR", "BOT_INVITE_LINK", "SPOTIFY_CLIENT_ID", "SPOTIFY_CLIENT_SECRET", "APPLE_MUSIC_KEY", "OPENAI_API_KEY", "LAVALINK_HOST", "LAVALINK_PORT", "LAVALINK_PASSWORD"]
+ required_vars = ["TOKEN", "BOT_COLOR", "BOT_INVITE_LINK", "SPOTIFY_CLIENT_ID", "SPOTIFY_CLIENT_SECRET", "OPENAI_API_KEY", "LAVALINK_HOST", "LAVALINK_PORT", "LAVALINK_PASSWORD"]
for var in required_vars:
if var not in os.environ:
@@ -267,7 +253,6 @@ def validate_env_vars():
TOKEN = os.environ["TOKEN"]
SPOTIFY_CLIENT_ID = os.environ["SPOTIFY_CLIENT_ID"]
SPOTIFY_CLIENT_SECRET = os.environ["SPOTIFY_CLIENT_SECRET"]
- APPLE_MUSIC_KEY = os.environ["APPLE_MUSIC_KEY"]
OPENAI_API_KEY = os.environ["OPENAI_API_KEY"]
LAVALINK_HOST = os.environ["LAVALINK_HOST"]
LAVALINK_PORT = os.environ["LAVALINK_PORT"]
diff --git a/code/utils/media_api_key.py b/code/utils/media_api_key.py
new file mode 100644
index 0000000..b738302
--- /dev/null
+++ b/code/utils/media_api_key.py
@@ -0,0 +1,28 @@
+import requests
+import re
+
+from utils.config import LOG
+
+"""
+Search through the JS files on the Apple Music website to pull
+a media API key
+"""
+
+
+def get_media_api_key():
+ url = "https://music.apple.com"
+ response = requests.get(url)
+
+ js_files = re.findall(r"assets/(.*?\.js)", response.text)
+
+ # Look for `const Ga="TOKEN HERE"`
+ for js_file in js_files:
+ response = requests.get(f"{url}/assets/{js_file}")
+ match = re.search(r"const Ga=\"(.*?)\"", response.text)
+ if match:
+ return match.group(1)
+
+ LOG.error(
+ "Failed to find media API key. Apple Music support will not work until a key is found or manually set."
+ )
+ return None