137 lines
4.3 KiB
Python
137 lines
4.3 KiB
Python
"""
|
|
update_wanted.py — označuje fotky wanted=TRUE a nastavuje category.
|
|
Spusť a uprav seznam pravidel podle potřeby.
|
|
"""
|
|
import psycopg2
|
|
|
|
DB = dict(host="192.168.1.76", port=5432, user="vladimir.buzalka",
|
|
password="Vlado7309208104++", database="fotky_buzalkovi")
|
|
|
|
conn = psycopg2.connect(**DB)
|
|
conn.autocommit = True
|
|
cur = conn.cursor()
|
|
|
|
rules = [
|
|
# (popis, SQL WHERE, category)
|
|
# ── Samsung ──────────────────────────────────────────────────────────────
|
|
(
|
|
"Samsung SM-G935F / A520F / A525F / J500FN / I8190N / S7560 / S5230",
|
|
"camera_make IN ('samsung', 'SAMSUNG', 'Samsung') AND camera_model IN "
|
|
"('SM-G935F','SM-A520F','SM-A525F','SM-J500FN','GT-I8190N','GT-S7560','GT-S5230')",
|
|
"Rodina",
|
|
),
|
|
# ── Profesionální / cizí ─────────────────────────────────────────────────
|
|
(
|
|
"Nikon D5 / D4 / D700 / D300 / D800 / D500",
|
|
"camera_make = 'NIKON CORPORATION' AND camera_model IN "
|
|
"('NIKON D5','NIKON D4','NIKON D700','NIKON D300','NIKON D800','NIKON D500')",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Canon EOS-1D X III / 450D / 600D / R6 / 5D IV / 5D / 40D / 20D",
|
|
"camera_make = 'Canon' AND camera_model IN "
|
|
"('Canon EOS-1D X Mark III','Canon EOS 450D','Canon EOS 600D','Canon EOS R6',"
|
|
"'Canon EOS 5D Mark IV','Canon EOS 5D','Canon EOS 40D','Canon EOS 20D')",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Sony ILCE-1 (Alpha 1)",
|
|
"camera_make = 'SONY' AND camera_model = 'ILCE-1'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Panasonic DC-S5",
|
|
"camera_make = 'Panasonic' AND camera_model = 'DC-S5'",
|
|
"Rodina",
|
|
),
|
|
# ── Ostatní kompakty ─────────────────────────────────────────────────────
|
|
(
|
|
"Panasonic DMC-FZ5",
|
|
"camera_make = 'Panasonic' AND camera_model = 'DMC-FZ5'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Canon PowerShot S40",
|
|
"camera_make = 'Canon' AND camera_model = 'Canon PowerShot S40'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Canon PowerShot A40",
|
|
"camera_make = 'Canon' AND camera_model = 'Canon PowerShot A40'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Panasonic DMC-FX33",
|
|
"camera_make = 'Panasonic' AND camera_model = 'DMC-FX33'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"NIKON D80",
|
|
"camera_make = 'NIKON CORPORATION' AND camera_model = 'NIKON D80'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"GoPro HERO6 Black",
|
|
"camera_make = 'GoPro' AND camera_model = 'HERO6 Black'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Microsoft Lumia 930",
|
|
"camera_make = 'Microsoft' AND camera_model = 'Lumia 930'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Panasonic DMC-FX3",
|
|
"camera_make = 'Panasonic' AND camera_model = 'DMC-FX3'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Sony DSC-T77",
|
|
"camera_make = 'SONY' AND camera_model = 'DSC-T77'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Olympus C120/D380",
|
|
"camera_make = 'OLYMPUS OPTICAL CO.,LTD' AND camera_model = 'C120,D380'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Sony DSC-WX50",
|
|
"camera_make = 'SONY' AND camera_model = 'DSC-WX50'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Sony CYBERSHOT",
|
|
"camera_make = 'SONY' AND camera_model = 'CYBERSHOT'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Casio EX-Z6",
|
|
"camera_make = 'CASIO COMPUTER CO.,LTD.' AND camera_model = 'EX-Z6'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Olympus C765UZ",
|
|
"camera_make = 'OLYMPUS CORPORATION' AND camera_model = 'C765UZ'",
|
|
"Rodina",
|
|
),
|
|
(
|
|
"Nikon E990",
|
|
"camera_make = 'NIKON' AND camera_model = 'E990'",
|
|
"Rodina",
|
|
),
|
|
]
|
|
|
|
for popis, where, category in rules:
|
|
cur.execute(f"""
|
|
UPDATE photos
|
|
SET wanted = TRUE,
|
|
category = %s
|
|
WHERE {where}
|
|
AND (wanted = FALSE OR category IS DISTINCT FROM %s)
|
|
""", (category, category))
|
|
print(f"{popis}: {cur.rowcount:,} řádků → wanted=TRUE, category='{category}'")
|
|
|
|
conn.close()
|
|
print("Hotovo.")
|