Skip to content

gnarr/unpopularr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Unpopularr

Self-hosted media popularity tracking for Sonarr/Radarr/Lidarr + Plex/Emby/Jellyfin. The backend is async Rust with Postgres, and the UI is React + TypeScript.

Quick start

  1. Copy the config and fill in your URLs + API keys:
cp config/unpopularr.example.toml config/unpopularr.toml
  1. Run the backend + Postgres:
docker compose -f docker/compose.yml up --build
  1. Run the web UI (dev mode):
cd apps/web
npm install
npm run dev

The UI expects the API at http://localhost:8099. Set VITE_API_BASE if it lives elsewhere.

SQLite option

If you prefer not to run Postgres, set the database URL to SQLite (file path can be relative to the server working dir):

[database]
url = "sqlite://./data/unpopularr.db"

Make sure the directory exists or mount a volume when running in Docker.

API endpoints

  • POST /webhook/plex
  • POST /webhook/jellyfin
  • POST /webhook/emby
  • POST /admin/sync
  • GET /items?type=&sort=&filter=&page=
  • GET /items/{id}
  • GET /stats/overview

Config notes

  • Path remapping uses [ [path_mapping] ] entries with from and to.
  • Use webhook.tokens or per-instance webhook_token to secure webhooks.
  • Polling playback history runs every worker.poll_interval_secs (set to 0 to disable) using media_server.base_url + token.
  • Multiple media servers can be configured; pass ?instance=name in webhook calls.

License

GNU GPLv3. See LICENSE.

About

A self-hosted media analytics assistant for Sonarr/Radarr/Lidarr + Plex/Emby/Jellyfin: indexes libraries, tracks playback, and shows popularity so you can safely clean up unused TV, movies, and music.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors