From b0ea7ab93564f1b2f004f7ea74783508f12f4ff6 Mon Sep 17 00:00:00 2001 From: Parker Date: Tue, 21 Jan 2025 20:38:33 -0600 Subject: Fixes + Use SQLAlchemy --- code/utils/jellyfin_delete.py | 60 ++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 26 deletions(-) (limited to 'code/utils/jellyfin_delete.py') diff --git a/code/utils/jellyfin_delete.py b/code/utils/jellyfin_delete.py index 66af00b..0e65201 100644 --- a/code/utils/jellyfin_delete.py +++ b/code/utils/jellyfin_delete.py @@ -1,8 +1,9 @@ import datetime -import sqlite3 import requests -from utils.config import JELLYFIN_URL, JELLYFIN_HEADERS +from utils.database import Session +from utils.models import JellyfinAccounts +from utils.config import LOG, JELLYFIN_URL, JELLYFIN_HEADERS def delete_accounts(): @@ -10,29 +11,36 @@ def delete_accounts(): Delete Jellyfin accounts that have passed their deletion time """ # Get all expired Jellyfin accounts - db = sqlite3.connect("data/cordarr.db") - cursor = db.cursor() - 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: - request = requests.delete( - f"{JELLYFIN_URL}/Users/{jellyfin_user_id[0]}", - headers=JELLYFIN_HEADERS, + with Session() as session: + jellyfin_user_ids = ( + session.query(JellyfinAccounts.jellyfin_user_id) + .filter(JellyfinAccounts.deletion_time < datetime.datetime.now()) + .all() ) - # If 204 - account deleted - # If 404 - account not found - # Either way, remove account from database - if request.status_code in (404, 204): - cursor.execute( - "DELETE FROM jellyfin_accounts WHERE jellyfin_user_id = ?", - (jellyfin_user_id,), - ) - db.commit() - db.close() + # Delete each account + for jellyfin_user_id in jellyfin_user_ids: + print(f"Deleting account {jellyfin_user_id[0]}") + try: + response = requests.delete( + f"{JELLYFIN_URL}/Users/{jellyfin_user_id[0]}", + headers=JELLYFIN_HEADERS, + ) + response.raise_for_status() + # Get the account and delete it + account = ( + session.query(JellyfinAccounts) + .filter( + JellyfinAccounts.jellyfin_user_id + == jellyfin_user_id[0] + ) + .first() + ) + session.delete(account) + except: + LOG.error( + "Failed deleting Jellyfin account w/ ID" + f" {jellyfin_user_id[0]}" + ) + # Commit changes + session.commit() -- cgit v1.2.3-70-g09d2