Skip to content

Commit

Permalink
allow some functions to not require user token
Browse files Browse the repository at this point in the history
but we need the application id instead, well its better i guess
  • Loading branch information
prochy-exe committed May 14, 2024
1 parent ccb7bff commit 2a3b8c4
Showing 1 changed file with 35 additions and 18 deletions.
53 changes: 35 additions & 18 deletions malfetcher/mal_fetcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,15 @@
mal_to_al_status = {v:k for k, v in al_to_mal_status.items()}
skip_user_statuses = ["REPEATING"]

# Minimal user setup to interact with MyAnimeList API
config = utils_read_json(config_path)
if not config or 'myanimelist_client_id' not in config:
client_id = input("Please input your MyAnimeList API Client ID.\nhttps://myanimelist.net/apiconfig\n")
config['myanimelist_client_id'] = client_id
utils_save_json(config_path, config)
else:
client_id = config['myanimelist_client_id']

# Utils

def clear_cache():
Expand Down Expand Up @@ -93,20 +102,21 @@ def load_config():

# Functions

def make_graphql_request(myanimelist_api_url, params, method='get', myanimelist_token=None):
def make_graphql_request(myanimelist_api_url, params, method='get', myanimelist_token=None, user_request = False):
local_token = False
if myanimelist_token:
pass
elif 'myanimelist_key' in os.environ:
myanimelist_token = os.getenv('myanimelist_key')
if not os.path.exists(config_path):
os.makedirs(os.path.dirname(config_path))
if user_request:
if myanimelist_token:
pass
elif 'myanimelist_key' in os.environ:
myanimelist_token = os.getenv('myanimelist_key')
if not os.path.exists(config_path):
os.makedirs(os.path.dirname(config_path))
else:
myanimelist_token = load_config()
local_token = True
HEADERS = {'Authorization': f"Bearer {myanimelist_token}"}
else:
myanimelist_token = load_config()
local_token = True

# Constants for GraphQL endpoint and headers
HEADERS = {'Authorization': f"Bearer {myanimelist_token}"}
HEADERS = {'X-MAL-CLIENT-ID': f"{client_id}"}

def make_request():
request_func = getattr(requests, method.lower(), None)
Expand Down Expand Up @@ -157,6 +167,10 @@ def make_request():
def get_latest_anime_entry_for_user(status = "ALL", myanimelist_token=None, username = None):
if not username:
username = get_userdata(myanimelist_token)[0]
user_request = True
else:
user_request = False

status = status.upper()
status_options = ["CURRENT", "PLANNING", "COMPLETED", "DROPPED", "PAUSED", "REPEATING"]
params = {}
Expand Down Expand Up @@ -185,7 +199,7 @@ def get_latest_anime_entry_for_user(status = "ALL", myanimelist_token=None, use
params['status'] = al_to_mal_user_status[status]

request_url = f"https://api.myanimelist.net/v2/users/{username}/animelist"
data = make_graphql_request(request_url, params, myanimelist_token = myanimelist_token)
data = make_graphql_request(request_url, params, myanimelist_token = myanimelist_token, user_request = user_request)

if data:
anime = data[0]['node']
Expand All @@ -207,6 +221,10 @@ def get_latest_anime_entry_for_user(status = "ALL", myanimelist_token=None, use
def get_all_anime_for_user(status_list="ALL", myanimelist_token=None, username = None):
if not username:
username = get_userdata(myanimelist_token)[0]
user_request = True
else:
user_request = False

def main_function(status):
status = status.upper()
status_options = ["CURRENT", "PLANNING", "COMPLETED", "DROPPED", "PAUSED", "REPEATING"]
Expand All @@ -233,7 +251,7 @@ def main_function(status):
params['status'] = al_to_mal_user_status[status]

request_url = f"https://api.myanimelist.net/v2/users/{username}/animelist"
data = make_graphql_request(request_url, params, myanimelist_token = myanimelist_token)
data = make_graphql_request(request_url, params, myanimelist_token = myanimelist_token, user_request = user_request)

user_ids = {}

Expand Down Expand Up @@ -276,7 +294,6 @@ def main_function(status):

def get_anime_entry_for_user(myanimelist_id, myanimelist_token=None):
myanimelist_id = str(myanimelist_id)
username = get_userdata(myanimelist_token)[0]

params = {}
params['fields'] = (
Expand All @@ -294,7 +311,7 @@ def get_anime_entry_for_user(myanimelist_id, myanimelist_token=None):
"related_anime"
)
request_url = f"{anime_request_url}/{myanimelist_id}"
data = make_graphql_request(request_url, params, myanimelist_token = myanimelist_token)
data = make_graphql_request(request_url, params, myanimelist_token = myanimelist_token, user_request=True)
anime_data = {}
if data:
anime_id = str(data['id'])
Expand Down Expand Up @@ -471,7 +488,7 @@ def myanimelist_fetch_id(name, myanimelist_token=None):
def get_userdata(myanimelist_token):
params = {}
request_url = "https://api.myanimelist.net/v2/users/@me"
data = make_graphql_request(request_url, params, myanimelist_token = myanimelist_token)
data = make_graphql_request(request_url, params, myanimelist_token = myanimelist_token, user_request = True)

if data:
# Extract the username from the response data
Expand Down Expand Up @@ -511,5 +528,5 @@ def update_entry(anime_id, progress, myanimelist_token=None):
else:
params['status'] = 'CURRENT'
request_url = f"https://api.myanimelist.net/v2/anime/{anime_id}/my_list_status"
make_graphql_request(request_url, params, 'put', myanimelist_token)
make_graphql_request(request_url, params, 'put', myanimelist_token, True)
print('Updating progress successful')

0 comments on commit 2a3b8c4

Please sign in to comment.