Files
fotkyBuzalkovi/00 PictureCollector/mark_cache_unwanted.py
T
administrator ee14efbd48 notebookVb
2026-06-06 06:26:42 +02:00

48 lines
1.5 KiB
Python

"""
mark_cache_unwanted.py — Označí celé adresáře Tower/appdata a Tower/Sabnzbd
jako nechceme (cache PhotoPrism/Immich + usenet download cache).
wanted=FALSE, category='Odpad-cache'
Idempotentní: díky filtru `category IS DISTINCT FROM 'Odpad-cache'` přepíše
jen řádky, které ještě nejsou označené (vč. těch, co camera-rules omylem
označily jako Rodina — jde o duplicitní cache kopie, ne originály).
Jediná DB session, autocommit — žádné paralelní běhy (deadlock).
"""
import sys
import psycopg2
sys.stdout.reconfigure(encoding="utf-8")
DB = dict(host="192.168.1.76", port=5432, user="vladimir.buzalka",
password="Vlado7309208104++", database="fotky_buzalkovi")
DIRS = [
("Tower/appdata (PhotoPrism/Immich cache)",
"/mnt/user/ZalohaVsechObrazku/Tower/appdata%"),
("Tower/Sabnzbd (usenet download cache)",
"/mnt/user/ZalohaVsechObrazku/Tower/Sabnzbd%"),
]
conn = psycopg2.connect(**DB)
conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)
cur = conn.cursor()
total = 0
for popis, like in DIRS:
cur.execute("""
UPDATE photos p
SET wanted = FALSE,
category = 'Odpad-cache'
FROM zaloha_obrazku z
WHERE p.zaloha_id = z.id
AND z.cesta_zalohy LIKE %s
AND p.category IS DISTINCT FROM 'Odpad-cache'
""", (like,))
print(f" {popis}: {cur.rowcount:,} řádků aktualizováno")
total += cur.rowcount
print(f"\nHotovo. Celkem aktualizováno: {total:,} řádků.")
conn.close()