Delete Jellyfin accounts when needed

Jellyfin accounts never actually got deleted from Jellyfin, I forgot to write that part. So now the accounts are properly deleted from both Jellyfin and the DB.
This commit is contained in:
Parker M. 2024-06-19 11:08:37 -05:00
parent d447126db1
commit 00d217f453
2 changed files with 34 additions and 11 deletions

View File

@ -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__":

View File

@ -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