Skip to content

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

License

Notifications You must be signed in to change notification settings

thcolin/sensorr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

361d093 Β· Feb 2, 2021
Feb 2, 2021
Jun 7, 2020
Jun 7, 2020
Jun 30, 2019
Jun 7, 2020
Aug 19, 2020
Jul 30, 2020
Jul 5, 2020
Aug 9, 2019
Jun 30, 2019
Jun 7, 2020
Apr 26, 2020
Nov 12, 2019
Jul 5, 2020
Jul 10, 2019
Jul 10, 2019
Mar 17, 2019
Mar 24, 2020
Aug 9, 2019
May 11, 2020
Feb 3, 2020
Sep 21, 2019
Sep 21, 2019
May 11, 2020

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