Skip to content

Plex Watchlist Sync fails when Plex Discover returns metadata under MediaContainer.Video instead of MediaContainer.Metadata #2948

@ik8sqi

Description

@ik8sqi

Description

Seerr currently assumes:

const metadata = detailedResponse.MediaContainer.Metadata[0];

However, Plex sometimes returns:

<MediaContainer ...>
  <Video ... ratingKey="669748dc85be974cd2ab194c" title="Marty Supreme" type="movie">
    <Guid id="tmdb://1317288"/>
    <Guid id="imdb://tt32916440"/>
    <Guid id="tvdb://358417"/>
  </Video>
</MediaContainer>

This causes Plex Watchlist Sync to fail because MediaContainer.Metadata is undefined.


Version

Seerr Stable 3.2.0
Docker image: ghcr.io/seerr-team/seerr:latest


Steps to reproduce

  1. Add a Plex Watchlist item whose Plex Discover metadata endpoint returns <Video> instead of <Metadata>.
  2. Trigger Plex Watchlist Sync.
  3. Seerr fails while processing the watchlist item.

Verification command:

curl -sS -H "X-Plex-Token: $PLEX_TOKEN" "https://discover.provider.plex.tv/library/metadata/669748dc85be974cd2ab194c" | grep -oE '<(Metadata|Video)[ >]' | head -1

Output:

<Video

Expected behavior

Seerr should handle both response shapes:

detailedResponse.MediaContainer.Metadata?.[0]

and:

detailedResponse.MediaContainer.Video?.[0]

Actual behavior

Plex Watchlist Sync fails when MediaContainer.Metadata is missing.


Tested local fix

This fixed the issue locally:

const metadata = (
  detailedResponse.MediaContainer.Metadata?.[0] ??
  detailedResponse.MediaContainer.Video?.[0]
);

Relevant source line

In /app/dist/api/plextv.js:

const metadata = detailedResponse.MediaContainer.Metadata[0];

Version

3.2.0

Steps to Reproduce

Steps to reproduce:

  1. Add Marty Supreme (2025) to the Plex Watchlist.
    
  2. Run Plex Watchlist Sync in Seerr 3.2.0.
    
  3. The Plex Discover metadata endpoint for that item returns <Video> instead of <Metadata>.
    
  4. Seerr fails because it assumes detailedResponse.MediaContainer.Metadata[0] exists.
    

I also saw the same failure pattern with other watchlist items, including Highlander (unreleased yet) and Perfect Days (2023).

Screenshots

No response

Logs

seerr  | 2026-04-24T08:40:03.090Z [error][Plex.TV Metadata API]: Failed to retrieve watchlist items {"errorMessage":""}
seerr  | 2026-04-24T08:50:00.060Z [info][Jobs]: Starting scheduled job: Plex Watchlist Sync
seerr  | 2026-04-24T08:50:02.671Z [error][Plex.TV Metadata API]: Failed to retrieve watchlist items {"errorMessage":""}
seerr  | 2026-04-24T09:00:00.018Z [info][Jobs]: Starting scheduled job: Plex Watchlist Sync
seerr  | 2026-04-24T09:00:06.690Z [error][Plex.TV Metadata API]: Failed to retrieve watchlist items {"errorMessage":""}
seerr  | 2026-04-24T09:10:00.076Z [info][Jobs]: Starting scheduled job: Plex Watchlist Sync
seerr  | 2026-04-24T09:10:01.361Z [error][Plex.TV Metadata API]: Failed to retrieve watchlist items {"errorMessage":""}
seerr  | 2026-04-24T09:20:00.027Z [info][Jobs]: Starting scheduled job: Plex Watchlist Sync
seerr  | 2026-04-24T09:20:03.433Z [error][Plex.TV Metadata API]: Failed to retrieve watchlist items {"errorMessage":""}
seerr  | 2026-04-24T09:30:00.016Z [info][Jobs]: Starting scheduled job: Plex Watchlist Sync
seerr  | 2026-04-24T09:30:06.288Z [error][Plex.TV Metadata API]: Failed to retrieve watchlist items {"errorMessage":""}
seerr  | 2026-04-24T09:40:00.011Z [info][Jobs]: Starting scheduled job: Plex Watchlist Sync
seerr  | 2026-04-24T09:40:03.997Z [error][Plex.TV Metadata API]: Failed to retrieve watchlist items {"errorMessage":""}
seerr  | 2026-04-24T09:46:20.033Z [error][Plex.TV Metadata API]: Failed to retrieve watchlist items {"errorMessage":""}
seerr  | 2026-04-24T09:46:37.458Z [error][Plex.TV Metadata API]: Failed to retrieve watchlist items {"errorMessage":""}
seerr  | 2026-04-24T09:49:31.172Z [error][Plex.TV Metadata API]: Failed to retrieve watchlist items {"errorMessage":""}
seerr  | 2026-04-24T09:49:39.660Z [info][Jobs]: Starting scheduled job: Plex Watchlist Sync
seerr  | 2026-04-24T09:49:40.273Z [info][Notifications]: Sending notification(s) for MEDIA_AUTO_REQUESTED {"subject":"Star Trek Into Darkness (2013)"}
seerr  | 2026-04-24T09:49:40.275Z [info][Media Request]: Sent request to Radarr {"requestId":172,"mediaId":138}
seerr  | 2026-04-24T09:49:40.289Z [info][Watchlist Sync]: Created media request from user's Plex Watchlist {"userId":1,"mediaTitle":"Star Trek Into Darkness"}
seerr  | 2026-04-24T09:49:40.320Z [info][Notifications]: Sending notification(s) for MEDIA_AUTO_REQUESTED {"subject":"Star Trek VI: The Undiscovered Country (1991)"}
seerr  | 2026-04-24T09:49:40.322Z [info][Media Request]: Sent request to Radarr {"requestId":173,"mediaId":139}
seerr  | 2026-04-24T09:49:40.333Z [info][Watchlist Sync]: Created media request from user's Plex Watchlist {"userId":1,"mediaTitle":"Star Trek VI: The Undiscovered Country"}
seerr  | 2026-04-24T09:49:41.289Z [info][Radarr]: Radarr accepted request
seerr  | 2026-04-24T09:49:41.303Z [info][Radarr]: Radarr accepted request
seerr  | 2026-04-24T09:49:47.246Z [info][Jobs]: Starting scheduled job: Plex Watchlist Sync
seerr  | 2026-04-24T09:50:00.067Z [info][Jobs]: Starting scheduled job: Plex Watchlist Sync
seerr  | 2026-04-24T09:57:37.581Z [error][Plex.TV Metadata API]: Failed to retrieve watchlist items {"errorMessage":""}
seerr  | 2026-04-24T10:00:00.016Z [info][Jobs]: Starting scheduled job: Plex Watchlist Sync
seerr  | 2026-04-24T10:00:06.258Z [error][Plex.TV Metadata API]: Failed to retrieve watchlist items {"errorMessage":""}

Platform

desktop

Database

SQLite (default)

Device

Any - issue os on the docker image

Operating System

docker image

Browser

irrelevant

Additional Context

No response

Search Existing Issues

  • Yes, I have searched existing issues.

Code of Conduct

  • I agree to follow Seerr's Code of Conduct

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions