47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
import datetime
|
|
import requests
|
|
|
|
from utils.database import Session
|
|
from utils.models import JellyfinAccounts
|
|
from utils.config import LOG, JELLYFIN_URL, JELLYFIN_HEADERS
|
|
|
|
|
|
def delete_accounts():
|
|
"""
|
|
Delete Jellyfin accounts that have passed their deletion time
|
|
"""
|
|
# Get all expired Jellyfin accounts
|
|
with Session() as session:
|
|
jellyfin_user_ids = (
|
|
session.query(JellyfinAccounts.jellyfin_user_id)
|
|
.filter(JellyfinAccounts.deletion_time < datetime.datetime.now())
|
|
.all()
|
|
)
|
|
|
|
# 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()
|