update
This commit is contained in:
@@ -116,10 +116,25 @@ def existing_netflix_ids(conn):
|
||||
return {row["id"]: row["netflix_id"] for row in rows}
|
||||
|
||||
|
||||
# Sammlung, Rad und Gesehen zeigen auch Filme, die nie auf Netflix liefen.
|
||||
# Deren Daten stehen trotzdem im Katalog — sonst blieben die Karten leer.
|
||||
BENUTZT = ("wishlist", "suggestions", "watched")
|
||||
|
||||
|
||||
def benutzte_ids(conn):
|
||||
"""Alle movie_ids, an denen jemand hängt."""
|
||||
teile = " UNION ".join(f"SELECT movie_id FROM {t}" for t in BENUTZT)
|
||||
return {r[0] for r in conn.execute(teile)}
|
||||
|
||||
|
||||
def drop_missing(conn, keep_ids):
|
||||
"""Was weder auf Netflix läuft noch im Kanon steht, fliegt raus."""
|
||||
"""Was weder auf Netflix läuft noch im Kanon steht, fliegt raus.
|
||||
|
||||
Ausgenommen, was jemand gemerkt, vorgeschlagen oder geschaut hat: die
|
||||
Karten dazu holen ihre Daten aus dieser Tabelle.
|
||||
"""
|
||||
current = {r["id"] for r in conn.execute("SELECT id FROM movies").fetchall()}
|
||||
gone = current - set(keep_ids)
|
||||
gone = current - set(keep_ids) - benutzte_ids(conn)
|
||||
if gone:
|
||||
conn.executemany("DELETE FROM movies WHERE id = ?", [(i,) for i in gone])
|
||||
return len(gone)
|
||||
|
||||
Reference in New Issue
Block a user