Repository navigation
feat(providers): add Seerr integration (Overseerr/Jellyseerr compatible) - #59
Conversation
|
Part of a set of integration PRs. Overview, merge order and design notes: #64 |
itz4blitz
left a comment
There was a problem hiding this comment.
The Seerr provider looks correct and I would merge it on its own. The client uses /api/v1 and X-Api-Key, list calls match the request and issue routes, secrets are not copied into activity metadata, and the winston line parser matches seerr-YYYY-MM-DD.log while skipping the seerr.log symlink and .gz archives. The metadata split is bounded (16 attempts, 64KB tail).
I am not merging it in this pass. It conflicts with the other integration PRs on the shared wiring (ingestion.service.ts, servers.service.ts, Dockerfiles, compose, env files, integrations.ts, turbo.json). #57 and #60 are going in first. Please rebase onto current master after those land. No code changes requested.
Non-blocking:
- The 3-page cap comment cites the
/settings/logsrate limit. This provider never calls that route. The cap itself is fine; the rationale is not. userName()prefersdisplayName, which Seerr sets to the email when there is no username. Prefer the username fields, and do not surface an email as the display name.- The section banners restate the methods under them.
Add @logarr/provider-seerr for Seerr, the merged successor of Overseerr and Jellyseerr (same /api/v1, so all three are supported by one provider). - X-Api-Key client; connection test and version via /settings/about - Activity from media requests and issues, one row per status transition (seerr-request-<id>-status-<n>), with since-filtering and bounded paging - File tailing of seerr-*.log / overseerr-*.log / jellyseerr-*.log with a winston line parser that handles labels, JSON metadata and stack traces - Backend registration, env seeding (SEERR_URL/SEERR_API_KEY, /seerr-logs), proxy path, Dockerfiles, compose, turbo env - Frontend: single available "Seerr" integration replaces the Overseerr and Jellyseerr coming-soon entries; provider icon and logs deep link - README updates
e7ab024 to
99b7cab
Compare
|
Thanks for the review. I rebased onto The three non-blocking items are done as well:
I also commented out the Seerr variables in |
Summary
Adds a Seerr integration (
@logarr/provider-seerr). Seerr is the merged successor of Overseerr and Jellyseerr. All three expose the same/api/v1, so one provider covers them.What it ingests
seerr-request-<id>-status-<n>andseerr-issue-<id>-status-<n>.modifiedand filtered against the last sync time, reading at most 3 pages of 50. If that cap is reached, a warning is logged.seerr-YYYY-MM-DD.log, plus the legacyoverseerr-*.logandjellyseerr-*.log.seerr.logsymlink and the.machinelogs*.jsonfiles are excluded.ts [level][Label]: message {json}, including the optional label, trailing JSON metadata, ANSI codes and stack traces./settings/about, which checks the admin API key and returns the version.Wiring
IngestionServiceandServersService;SEERR_URL,SEERR_API_KEYandSEERR_LOGS_PATH, mounted at/seerr-logs;/api/v1, both Dockerfiles, the compose files andturbo.jsonenv.overseerrandjellyseerrcoming-soon entries.Notes
overseerrandjellyseerrcoming-soon entries inintegrations.tsare replaced by the singleseerrentry. Searching for either name still finds it.[seerr] Failed to get …log line, the poll fails only when every source fails, and calls beforeconnectthrowNot connected.issue_sourcehas noseerrvalue, so issues fall back tosystem. That is the same as Plex, Emby and Whisparr today, and is out of scope here.tmdb:<id>to avoid extra API calls.Testing
@logarr/provider-seerrhas 122 unit tests covering:sincefiltering, paging caps, partial failure and privacy rules.LogFileProcessorend to end.pnpm build,pnpm lint,pnpm typecheckandpnpm testall pass.pnpm install --frozen-lockfileis clean, and the lockfile diff only adds the new package.seerr-team/seerrsource.pnpm format:checkalready fails onmaster(pre-existing files); the files added or changed here are prettier-clean.