48 lines
1.5 KiB
Python
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()
|