Skip to content

πŸΏπŸ“Ό Sensorr - Your Friendly Digital Video Recorder

License

Notifications You must be signed in to change notification settings

thcolin/sensorr

Repository files navigation

✨ Features

Screenshot Description
Home
  • Trending
  • Discover (Popular)
  • Discover (By year)
  • Discover (By genre)
  • Discover (By studio)
  • Trending (stars)
Library
  • Manage your movies library (wished, pinned and archived)
Discover
  • Discover movies with many options
Movie
  • Display movie details
  • Consider movie as, πŸ”• ignored, 🍿 wished, πŸ“ pinned or πŸ“Ό archived
  • Find releases on sources (torznab / newznab) - requested with title (localized) and original_title
  • Grab a release (manual or auto)
Collection
  • Display collection details
Calendar
  • Track upcoming movies from followed stars !
Following
  • Manage stars you're following
Star
  • Display star details
  • Follow star πŸ”• ignored, πŸ”” followed
Logs
  • See logs details
  • Every wished movie processed

🏎️ Quick Start

Best way to get a Sensorr fresh install is with the Docker image, you just need a terminal with docker installed !

🐳 Docker

Checkout Sensorr Docker image at thcolin/sensorr/

# `/home/user/.sensorr` will be your config path
# `/home/user/downloads` will be your blackhole path
docker run -p 5070:5070 -v /home/user/.sensorr:/app/sensorr/config -v /home/user/downloads:/app/sensorr/blackhole --name="sensorr" thcolin/sensorr

Tips: Docker image is based on alpine, so you can add TZ env variable with -e TZ=Europe/Paris

🎚 Configure

  • Edit default configuration at http://localhost:5070/settings (or config/config.json)

⏰ Jobs

Some necessary cron jobs will be launched in background every day:

  • 16:03 sensorr:purge: Clean oldest log sessions (if directory space exceeds configured value)
  • 17:00 sensorr:record: Record wished movies from collection with best release
  • 01:03 sensorr:schedule: Schedule calendar with recents movies from stalked stars (+/- 2 years from today)
  • 03:03 sensorr:pairwise: Pairwise Plex instance with Sensorr instance (if configured)
  • 05:03 sensorr:hydrate: Hydrate -or refresh- collected movies and stalked stars data

πŸ—ΊοΈ Roadmap

  • Fix Home rows issues
    • Upcoming / Records empty
  • Display other Person behind each Movie on Details page (:hover only)
    • Load every followed stars from database on component mount
  • Feature Policies
    • Add "groups" Policy with "default" === current (groups like default or blockbuster for example)
      • Add configurable avoid terms on Movie (like /movie/515195 which got a 0.73 similarity score with /movie/582607)
      • Add configurable prefer terms on Movie (like /movie/447404 I want in FRENCH and not VOSTFR)
    • Add size property on Settings/blocks/Policy (how to handle it ? min/max ?)
    • Improve Documents.*.Filters
      • policies - multiple
    • Movie
      • Add policies
        • Checkbox displayed as grid or column
          • After Row ? - Bad UX, far away from state
        • Create policy option (will copy/paste default)
        • Edit policy link
    • Add List page
      • Grouped movies by "policy"
      • Same layout as Home page
  • Feature Review (fix manual)
    • Summary command result
      • record:
          From ${wished} wished 🍿 movies, ${found} where recorded πŸ“Ό to ${sensorr.config.blackhole} !
            * ${movie.title} (${movie.year}) with release ${release.generated}
          ${filtered} were filtered 🚫 according to your policies
            * ${movie.title} (${movie.year})
              * ${release} (${reason})
          But ${missing} still missing πŸ“­ (with no releases found)
            * ${movie.title} (${movie.year}) 
          You should look at these ${error} errors 🚨
            * ${movie.title} (${movie.year}) : ${err}
        
    • Refactor Logs
      • Left panel with session list with summary
      • Records
        • Summary
          • 🍿 Wished
          • πŸ“Ό Recorded
          • 🚫 Filtered (reviewable)
          • πŸ“­ Missing (reviewable)
          • 🚨 Error (reviewable)
        • Review
          • Review each record, one by one, autoscroll on validation
        • Record
          • Allow to post an issue on thcolin/oleoo
            • With data : { movie, records: records.map(record => record.meta ) }
          • Allow to search for releases manualy
            • Allow to search custom titles - like The.92nd.Annual.Academy.Awards.2020.FRENCH.1080p.HDTV.H264-SH0W - out of releases scope
          • Allow to ban releases (like a release with hardcoded subtitles downloaded that i don't want)
      • Purge
      • Pairwise
      • Hydrate
  • Feature performance
    • Rename XZNAB to XYZNAB
    • On Person.State unfollow, delete calendar entities with only this as followed credits
    • Look at shipjs
    • oleoo
      • Refactor algorithm, split title and metadata with year|language|resolution|source ([0]/[1])
    • Server
      • Look at WatermelonDB
        • Or only use remote PouchDB server with rxdb
      • Fix RAM usage with sessions in io
    • CLI
      • Use cli-step
      • When stalk star, atomicUpsert it
      • Fix record command, filter movies with release date < +3 months (useless to search for movies still in production - make configurable)
      • Compile binary (reduce Docker image size by removing useless dependecies)
    • Responsive design / mobile UI-UX
      • Take screenshots in small, medium and large breakpoints
  • Feature Config
  • Feature 1.0.0
    • πŸŽ‰
    • Fix docz
    • Improve README
  • Feature Notifications
    • Notify records summary (email, sms, etc...)
  • Feature UI/UX sugar
    • Translate (fr, en)
    • Discover
      • Add status in controls - how ?
      • Add Random button
    • Home
      • Add Head Movie ? (see inspiration)
        • Add "pre-configured" List like Oscars ?
        • Weekly movies selection (?)
          • Allow user to send PR with own movies selection
        • Make sensorr a social network (?)
          • Look at Mastodon example and ActivityPub spec
          • Make it private by default, if public will only show non-user related informations (home, discover, calendar (?), following (?))
          • Multi user (?)
    • Settings
      • Database
        • Allow to clean browser sensorr-* databases (doctor)
    • Grid
      • Select/Deselect all
      • Actions on selection
    • Loading page waiting sync of db with progress ?
      • Allow to clean database if waiting too much
    • Dark mode (theme-ui)
  • Feature Custom Home
    • Home
      • Customize
        • Pinned sortable Trending|Discover Rows
          • type=[Popular|Top|Calendar|Trending|Discover]
          • uri={...}
          • params={...}
        • Save from Discover "current" params
  • Feature Doctor
    • Replace Plex releases by better if available, like CouchPotato
      • Plex manage all medias, so we can get release (source, language, resolution, ...) and compute score
  • Feature Onboarding
    • Add Onboarding page
  • Add demo on a server
  • Feature Browser Plugin
    • IMDB, TMDB, SensCritique or AlloCinΓ© browser plugin "bookmark" (update state of current movie website tab on Sensorr instance)
  • Feature import/export
    • Synchronize with trakt.tv
  • Feature Mobile app
    • Connect to server with QR code
    • Streaming from Releases (how to know which file read ? - ask user)

🎨 Inspiration

πŸ‘‹ Alternatives