aboutsummaryrefslogtreecommitdiff
path: root/app/db_removal.py
blob: e03ea2adf60e88d32a617be4701827df28b4dcc2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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()