feat(plex): Phase C — incremental + full Plex↔Siftlode watch reconcile
Completes the two-way watch-state sync with two scheduler jobs: - plex_watch_sync (default 30m): pull recent Plex-side changes (watch history + on-deck, filtered to the owner account) into Siftlode under last-write-wins (_pull_apply + a _same_state ping-pong guard + skew tolerance), then re-push any still-unsynced local states. - plex_watch_reconcile (default daily): full section rescan; uses synced_to_plex to settle what the incremental feed can't — notably propagating a Plex-side un-watch (clear a previously-mirrored row Plex no longer has) — while re-pushing never-synced local states and never touching hidden (Siftlode-only) rows. Union-preserving. PlexClient gains accounts/watch_history/on_deck; _scan_plex_states is factored out and shared with the one-time import. Owner accountID is resolved once and cached on the link. Both jobs are registered in the scheduler (pause-skip, activity tracking, run-now, admin-tunable intervals) with trilingual (HU/EN/DE) labels + descriptions. New config default plex_watch_reconcile_interval_min. Verified live against the real Plex server: read feeds, last-write-wins, dirty re-push, the incremental job end-to-end, and a full reconcile that cleared exactly the one un-watched item with zero collateral across 17976 scanned.
This commit is contained in:
parent
bdf35c3375
commit
bbbcf4ff5a
7 changed files with 332 additions and 43 deletions
|
|
@ -69,7 +69,9 @@
|
|||
"maintenance": "Megkeresi a már sehol le nem játszható videókat (törölt, priváttá tett, elhagyott premier), elrejti őket a hírfolyamból, és türelmi idő után eltávolítja; újraellenőrzi a legrégebben ellenőrzött videókat. Ha leáll, a halott videók a katalógusban maradnak.",
|
||||
"explore_cleanup": "A türelmi idő után eltávolítja a felfedezett, de nem követett csatornákat (és videóikat), hogy a kíváncsiság-böngészés ne halmozódjon a katalógusban. Ha leáll, az elhagyott felfedezett csatornák megmaradnak.",
|
||||
"download_gc": "Törli a megőrzési időn túli letöltéseket, felszabadítja a már senki által nem használt helyet, és a lejárat előtt figyelmezteti a tulajdonost. Ha leáll, a régi letöltések felhalmozódnak, és a tárhely nem szabadul fel.",
|
||||
"plex_sync": "Tükrözi az engedélyezett Plex-könyvtárakat az app katalógusába — ez adja a Plex böngészés, keresés, szűrők és infó-oldalak metaadatait (műfaj, szereplők, pontszám, borítók). Ha leáll, az újonnan hozzáadott vagy módosított Plex-címek csak a következő sync után jelennek meg."
|
||||
"plex_sync": "Tükrözi az engedélyezett Plex-könyvtárakat az app katalógusába — ez adja a Plex böngészés, keresés, szűrők és infó-oldalak metaadatait (műfaj, szereplők, pontszám, borítók). Ha leáll, az újonnan hozzáadott vagy módosított Plex-címek csak a következő sync után jelennek meg.",
|
||||
"plex_watch_sync": "Áthozza a Plex-oldali friss megtekintés-változásokat (befejezett epizódok, folytatás-pozíciók) a Siftlode-ba, és felnyomja a Plexet el nem érő helyi változásokat. Ez az olcsó kétirányú szinkron a teljes reconcile-ok között. Ha leáll, a Plex-appban jelölt megtekintés/folytatás lassabban jelenik meg itt.",
|
||||
"plex_watch_reconcile": "Teljes megtekintés-állapot reconcile, ami minden könyvtárat újraszkennel — elkapja, amit az inkrementális menet nem, főleg ha egy epizódról a Plex oldalán levették a megtekintve jelet. Nehezebb, ezért kb. naponta fut. Ha leáll, a Plexben végzett un-watch nem tükröződik vissza."
|
||||
},
|
||||
"jobs": {
|
||||
"rss_poll": "RSS-lekérdezés (új feltöltések)",
|
||||
|
|
@ -83,7 +85,9 @@
|
|||
"demo_reset": "Demo fiók visszaállítása",
|
||||
"explore_cleanup": "Felfedezett csatornák takarítása",
|
||||
"download_gc": "Letöltések takarítása",
|
||||
"plex_sync": "Plex-könyvtár szinkron"
|
||||
"plex_sync": "Plex-könyvtár szinkron",
|
||||
"plex_watch_sync": "Plex megtekintés-szinkron (inkrementális)",
|
||||
"plex_watch_reconcile": "Plex megtekintés-reconcile (teljes)"
|
||||
},
|
||||
"queue": {
|
||||
"recentPending": "Szinkronra váró csatorna",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue