diff --git a/code/bot.py b/code/bot.py index 4b3d96d..e8dc418 100644 --- a/code/bot.py +++ b/code/bot.py @@ -6,6 +6,7 @@ import sqlite3 import os from validate_config import create_config +from func.jellyfin import delete_jellyfin_account from global_variables import LOG, BOT_TOKEN @@ -35,16 +36,15 @@ async def on_ready(): @tasks.loop(seconds=60) async def delete_old_temp_accounts(): - # Delete all of the temporary Jellyfin accounts that have passed - # their expiration time + # Get all jellyfin user IDs that have passed their deletion time db = sqlite3.connect("cordarr.db") cursor = db.cursor() - cursor.execute( - "DELETE FROM jellyfin_accounts WHERE deletion_time < ?", - (datetime.datetime.now(),), - ) - db.commit() - db.close() + cursor.execute("SELECT jellyfin_user_id FROM jellyfin_accounts WHERE deletion_time < ?", (datetime.datetime.now(),)) + jellyfin_user_ids = cursor.fetchall() + + # Delete the Jellyfin accounts + for jellyfin_user_id in jellyfin_user_ids: + delete_jellyfin_account(jellyfin_user_id[0]) if __name__ == "__main__": diff --git a/code/func/jellyfin.py b/code/func/jellyfin.py index d434c17..c255ac2 100644 --- a/code/func/jellyfin.py +++ b/code/func/jellyfin.py @@ -46,9 +46,6 @@ def create_jellyfin_account(user_id): json=account_policy, ) if request_3.status_code != 204: - print(request_3.json()) - print(request_3.status_code) - print("BROKEN AT REQUEST 3") return False # Add the information to the database @@ -62,3 +59,29 @@ def create_jellyfin_account(user_id): db.close() return username, password + + +""" +Delete a specific Jellyfin account and return True/False +""" + + +def delete_jellyfin_account(jellyfin_user_id): + request = requests.delete( + f"{JELLYFIN_URL}/Users/{jellyfin_user_id}", + headers=JELLYFIN_HEADERS, + ) + # If 204 - account deleted + # If 404 - account not found + # Either way, remove account from database + if request.status_code in (404, 204): + db = sqlite3.connect("cordarr.db") + cursor = db.cursor() + cursor.execute( + "DELETE FROM jellyfin_accounts WHERE jellyfin_user_id = ?", + (jellyfin_user_id,), + ) + db.commit() + db.close() + return True + return False \ No newline at end of file