Welcome to the Sharr repository! This is a simple docker service which allows you to import shows and movies from your Plex watchlist. It uses the Plex API to get the watchlist and gives you a list compatible with Radarr and Sonarr.
Sharr converts your watchlist into lists which are compatible with many different services. The main difference from using this other than importing your plex watchlist directly is that you can filter out shows and movies which are already available on your preferred streaming services (Set in Plex). This will greatly reduce the amount of downloads and storage needed.
- Add the service to your docker compose file
services:
sharr:
image: thom1606/sharr:latestcontainer_name: sharrports:
- 6464:6464environment:
- PLEX_EXTRA_USER_TOKENS=token2,token3 # Optional
- PLEX_OWNER_TOKEN=token1
- IGNORE_PREFERRED_SERVICES=false # Optional- Start your docker containers
- Add the service url to your Radarr or Sonarr settings
- Go to Settings > Import Lists > Add List > Custom Lists
- Set the list URL to
http://localhost:6464/radarr - Test if the list is reachable and save
- Go to Settings > Import Lists > Add List > Custom Lists
- Set the list URL to
http://localhost:6464/sonarr - Test if the list is reachable and save
| Variable | Description | Default |
|---|---|---|
| PLEX_OWNER_TOKEN | The token for the owner of the plex server | |
| PLEX_EXTRA_USER_TOKENS | A comma separated list of tokens for extra users | |
| IGNORE_PREFERRED_SERVICES | Whether to ignore your preferred services | false |
| PORT | The port the service listens on | 6464 |
| CACHE_TTL_SECONDS | How long a fetched watchlist is reused. Set to 0 to disable caching | 300 |
| PLEX_TIMEOUT_SECONDS | Timeout for a single request to the Plex API | 15 |
| Endpoint | Description |
|---|---|
/radarr | The movies on your watchlist, as a Radarr custom list |
/sonarr | The series on your watchlist, as a Sonarr custom list |
/health | Returns 200 when every configured Plex token is still valid, 401 otherwise |
The watchlist is cached for CACHE_TTL_SECONDS, so frequent polling no longer
means a full walk through the Plex API on every request.
The plex token can be found by inspecting the network requests in your browser. You can find a guide here. Every request will have a X-Plex-Token header which you can copy.
Requires Bun.
bun install
bun run dev # start with hot reload on http://localhost:6464
bun test# unit tests; the live Plex tests need PLEX_OWNER_TOKEN
bun run typecheck # tsc --noEmit
bun run lint # biome