Skip to content

Commit a912f56

Browse files
gwlsnclaude
andcommitted
feat(plex): add Plex watchlist management functionality
Add comprehensive Plex watchlist support allowing users to add and remove movies and TV shows from their Plex watchlist directly from Seerr. Backend Changes: - Implement PlexTvAPI methods for watchlist operations - addToWatchlist() and removeFromWatchlist() using Plex Discover API - findPlexRatingKeyByTmdbId() with TMDB ID matching via metadata - isOnWatchlist() to check current watchlist status - Use fresh axios instance to avoid ExternalAPI header conflicts - Add /api/v1/plex-watchlist endpoints (POST, DELETE, GET status) - Implement duplicate prevention checking before adding items - Add cache invalidation after watchlist modifications - Extract ratingKey from Plex guid format (plex://movie/ID) Frontend Changes: - Add Plex watchlist buttons to MovieDetails and TvDetails pages - Position buttons between Blacklist and Trailer buttons - Use unfilled amber star icon for add, filled amber star for remove - Implement real-time watchlist status checking via useSWR - Add state management for watchlist updates and loading states - Add i18n support with tooltips for user guidance - Hide Jellyfin watchlist button for Plex users on TitleCard API Documentation: - Update OpenAPI spec with new Plex watchlist endpoints - Document request/response schemas for watchlist operations 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent b66b361 commit a912f56

File tree

10 files changed

+994
-2
lines changed

10 files changed

+994
-2
lines changed

docs/using-seerr/plex/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Seerr provides integration features that connect with your Plex media server to
1010

1111
## Available Features
1212

13+
- **Plex Watchlist Management** - Add or remove movies and TV shows from your Plex watchlist directly within Seerr
1314
- [Watchlist Auto Request](./plex/watchlist-auto-request) - Automatically request media from your Plex Watchlist
1415
- More features coming soon!
1516

seerr-api.yml

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4673,6 +4673,121 @@ paths:
46734673
responses:
46744674
'204':
46754675
description: Succesfully removed watchlist item
4676+
/plex-watchlist:
4677+
post:
4678+
summary: Add media to Plex Watchlist
4679+
description: Adds a movie or TV show to the authenticated Plex user's watchlist. Only available for Plex users.
4680+
tags:
4681+
- watchlist
4682+
requestBody:
4683+
required: true
4684+
content:
4685+
application/json:
4686+
schema:
4687+
type: object
4688+
required:
4689+
- tmdbId
4690+
- mediaType
4691+
properties:
4692+
tmdbId:
4693+
type: number
4694+
example: 701387
4695+
mediaType:
4696+
type: string
4697+
enum:
4698+
- movie
4699+
- tv
4700+
example: movie
4701+
title:
4702+
type: string
4703+
example: 'Bugonia'
4704+
responses:
4705+
'201':
4706+
description: Successfully added to Plex watchlist
4707+
content:
4708+
application/json:
4709+
schema:
4710+
type: object
4711+
properties:
4712+
success:
4713+
type: boolean
4714+
example: true
4715+
message:
4716+
type: string
4717+
example: 'Added to Plex watchlist'
4718+
tmdbId:
4719+
type: number
4720+
example: 701387
4721+
mediaType:
4722+
type: string
4723+
example: movie
4724+
title:
4725+
type: string
4726+
example: 'Bugonia'
4727+
'401':
4728+
description: Unauthorized - user not logged in
4729+
'403':
4730+
description: Forbidden - endpoint only available for Plex users
4731+
'404':
4732+
description: Could not find title in Plex
4733+
'500':
4734+
description: Internal server error
4735+
/plex-watchlist/{tmdbId}:
4736+
delete:
4737+
summary: Remove media from Plex Watchlist
4738+
description: Removes a movie or TV show from the authenticated Plex user's watchlist. Only available for Plex users.
4739+
tags:
4740+
- watchlist
4741+
parameters:
4742+
- in: path
4743+
name: tmdbId
4744+
description: TMDB ID of the media to remove
4745+
required: true
4746+
example: '701387'
4747+
schema:
4748+
type: string
4749+
responses:
4750+
'204':
4751+
description: Successfully removed from Plex watchlist
4752+
'400':
4753+
description: Invalid TMDB ID
4754+
'401':
4755+
description: Unauthorized - user not logged in
4756+
'403':
4757+
description: Forbidden - endpoint only available for Plex users
4758+
'404':
4759+
description: Item not found in Plex watchlist
4760+
'500':
4761+
description: Internal server error
4762+
/plex-watchlist/status/{tmdbId}:
4763+
get:
4764+
summary: Check if media is on Plex Watchlist
4765+
description: Returns whether the specified media item is on the authenticated user's Plex watchlist.
4766+
tags:
4767+
- watchlist
4768+
parameters:
4769+
- in: path
4770+
name: tmdbId
4771+
description: TMDB ID of the media to check
4772+
required: true
4773+
example: '701387'
4774+
schema:
4775+
type: string
4776+
responses:
4777+
'200':
4778+
description: Watchlist status returned
4779+
content:
4780+
application/json:
4781+
schema:
4782+
type: object
4783+
properties:
4784+
isOnWatchlist:
4785+
type: boolean
4786+
example: true
4787+
'400':
4788+
description: Invalid TMDB ID
4789+
'401':
4790+
description: Unauthorized - user not logged in
46764791
/user/{userId}/watchlist:
46774792
get:
46784793
summary: Get the Plex watchlist for a specific user

0 commit comments

Comments
 (0)