33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
from apscheduler.schedulers.background import BackgroundScheduler
|
|
import sqlite3
|
|
import requests
|
|
|
|
from initialize_variables import radarr_host, headers
|
|
|
|
# Remove all entries from the database of movies that have already finished downloading
|
|
# This helps to stop from entries building up in the database and slowing down everything
|
|
sched = BackgroundScheduler(daemon=True)
|
|
@sched.scheduled_job('cron', hour='0', minute='0')
|
|
def clear_database():
|
|
db = sqlite3.connect('/data/movies.db')
|
|
cursor = db.cursor()
|
|
# First get all of the movie ids in the database
|
|
cursor.execute('''
|
|
SELECT movie_id FROM movies
|
|
''')
|
|
movie_ids = cursor.fetchall()
|
|
# Get all of the movie_ids that are currently downloading/queued and/or missing
|
|
response = requests.get(f'{radarr_host}/api/v3/queue/', headers=headers)
|
|
current_movie_ids = []
|
|
for movie in response.json()['records']:
|
|
current_movie_ids.append(str(movie['movieId']))
|
|
|
|
# Loop through the movie_ids in the database, if they are not in the current_movie_ids list,
|
|
# that means they are not currently downloading/queued, so delete them from the database
|
|
for movie_id in movie_ids:
|
|
if movie_id[0] not in current_movie_ids:
|
|
cursor.execute('''
|
|
DELETE FROM movies WHERE movie_id = ?
|
|
''', (movie_id[0],))
|
|
db.commit()
|
|
db.close() |