* feat(historyimport): import the Plex account watchlist alongside watch history
The Plex import migrated only watch history; the user's saved watchlist
had to be rebuilt by hand (#245).
- PlexClient gains FetchWatchlist: pages the account-level watchlist on
the Plex discover API (discover.provider.plex.tv). It authenticates
with the plex.tv ACCOUNT token — the PIN/OAuth session token, which
resolvePlexAuth now threads through plexAuth.AccountToken (manual-token
imports pass the user token, which doubles as the account token).
- Watchlist entries become import Records flagged Watchlisted, carrying
identity only (movie/show → KindMovie/KindSeries, guids parsed) and no
watch state. They ride the existing matcher (series matching already
exists), and matched entries are added to the importing profile's
watchlist via the idempotent AddToWatchlistAt — re-imports do not
duplicate. A watchlist fetch failure downgrades to a run warning so the
history import still completes.
- Run summaries gain a watchlist_added counter (new column + repo
plumbing + client/admin UI cards).
Fixes#245
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(historyimport): count only newly inserted watchlist rows in WatchlistAdded
AddToWatchlistAt now reports whether a row was actually inserted (the
insert is ON CONFLICT DO NOTHING / INSERT OR IGNORE), and the import
summary increments WatchlistAdded only for genuine inserts, so
re-importing the same Plex account no longer inflates the count.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Quick <31828688+Quick104@users.noreply.github.com>