Skip to content

Commit

Permalink
add function to update progress in users list
Browse files Browse the repository at this point in the history
  • Loading branch information
prochy-exe committed May 11, 2024
1 parent af326c5 commit e8fa1dd
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
2 changes: 1 addition & 1 deletion malfetcher/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
from .mal_fetcher import check_status_in_cache, get_userdata, reset_user_cache, clear_cache, get_latest_anime_entry_for_user, get_all_anime_for_user, get_anime_entry_for_user, get_anime_info, get_id
from .mal_fetcher import check_status_in_cache, get_userdata, reset_user_cache, clear_cache, get_latest_anime_entry_for_user, get_all_anime_for_user, get_anime_entry_for_user, get_anime_info, get_id, update_entry
from .utils import utils_read_json, utils_save_json
from .mal_config_utils import config_setup, regenerate_token
40 changes: 30 additions & 10 deletions malfetcher/mal_fetcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ def load_config():

# Functions

def make_graphql_request(myanimelist_api_url, params, myanimelist_token=None):
def make_graphql_request(myanimelist_api_url, params, method='get', myanimelist_token=None):
local_token = False
if myanimelist_token:
pass
Expand All @@ -111,7 +111,11 @@ def make_graphql_request(myanimelist_api_url, params, myanimelist_token=None):
HEADERS = {'Authorization': f"Bearer {myanimelist_token}"}

def make_request():
response = requests.get(myanimelist_api_url, params=params, headers=HEADERS)
request_func = getattr(requests, method.lower(), None)
if method.lower() == 'put':
response = request_func(myanimelist_api_url, data=params, headers=HEADERS)
else:
response = request_func(myanimelist_api_url, params=params, headers=HEADERS)
return response

retries = 0
Expand Down Expand Up @@ -183,7 +187,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)
data = make_graphql_request(request_url, params, myanimelist_token = myanimelist_token)

if not username in user_entries:
user_entries[username] = {}
Expand Down Expand Up @@ -235,7 +239,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)
data = make_graphql_request(request_url, params, myanimelist_token = myanimelist_token)

if not username in user_entries:
user_entries[username] = {}
Expand Down Expand Up @@ -309,7 +313,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)
data = make_graphql_request(request_url, params, myanimelist_token = myanimelist_token)
anime_data = {}
if data:
anime_id = str(data['id'])
Expand Down Expand Up @@ -367,7 +371,7 @@ def myanimelist_fetch_anime_info(myanimelist_id, myanimelist_token=None):
}

request_url = f'{anime_request_url}/{myanimelist_id}'
data = make_graphql_request(request_url, params, myanimelist_token)
data = make_graphql_request(request_url, params, myanimelist_token = myanimelist_token)
anime_data = {}
if data:
anime_id = str(data['id'])
Expand All @@ -381,7 +385,7 @@ def get_additional_info(relation_id):
params = {
'fields': "status, related_anime"
}
data = make_graphql_request(anime_request_url + f"/{relation_id}", params, myanimelist_token)
data = make_graphql_request(anime_request_url + f"/{relation_id}", params, myanimelist_token = myanimelist_token)
return data

relations = {}
Expand Down Expand Up @@ -479,7 +483,7 @@ def myanimelist_fetch_id(name, myanimelist_token=None):
'q': name,
'limit': 1
}
data = make_graphql_request(anime_request_url, params, myanimelist_token)
data = make_graphql_request(anime_request_url, params, myanimelist_token = myanimelist_token)

if data:
return str(data[0]['node']['id'])
Expand All @@ -489,7 +493,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)
data = make_graphql_request(request_url, params, myanimelist_token = myanimelist_token)

if data:
# Extract the username from the response data
Expand All @@ -514,4 +518,20 @@ def mal_to_al_id(mal_id):

if response:
return int(response['data']['Media']['id'])
return None
return None

def update_entry(anime_id, progress, myanimelist_token=None):
progress = int(progress)
total_eps = get_anime_info(anime_id, myanimelist_token=myanimelist_token)[anime_id]['total_eps']
params = {}
params['num_watched_episodes'] = progress
if progress == total_eps:
params['status'] = 'COMPLETED'
elif progress == 0:
params['status'] = 'PLANNING'
del params['num_watched_episodes']
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)
print('Updating progress successful')

0 comments on commit e8fa1dd

Please sign in to comment.