{"id":13549004,"url":"https://github.com/lightglitch/seekerr","last_synced_at":"2025-04-02T22:31:14.237Z","repository":{"id":37987556,"uuid":"250403137","full_name":"lightglitch/seekerr","owner":"lightglitch","description":"Tool to add new movies to Radarr based on RSS, IMDB and Trakt lists filtering by ratings.","archived":false,"fork":false,"pushed_at":"2023-04-17T00:58:19.000Z","size":330,"stargazers_count":60,"open_issues_count":9,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-03T18:34:08.983Z","etag":null,"topics":["filter","imdb","movie","movies","radarr","rotten-tomatoes","rottentomatoes","rss","torrent","trakt"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lightglitch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":"lightglitch"}},"created_at":"2020-03-27T00:24:00.000Z","updated_at":"2024-08-17T10:04:40.000Z","dependencies_parsed_at":"2024-01-13T16:22:21.454Z","dependency_job_id":"8b40fa05-5833-4132-a9cf-8d28e1259309","html_url":"https://github.com/lightglitch/seekerr","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lightglitch%2Fseekerr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lightglitch%2Fseekerr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lightglitch%2Fseekerr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lightglitch%2Fseekerr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lightglitch","download_url":"https://codeload.github.com/lightglitch/seekerr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246905101,"owners_count":20852812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["filter","imdb","movie","movies","radarr","rotten-tomatoes","rottentomatoes","rss","torrent","trakt"],"created_at":"2024-08-01T12:01:17.152Z","updated_at":"2025-04-02T22:31:13.825Z","avatar_url":"https://github.com/lightglitch.png","language":"Go","funding_links":["https://github.com/sponsors/lightglitch"],"categories":["Go"],"sub_categories":[],"readme":"# seekerr\nTool to add new movies to Radarr based on RSS, IMDB and Trakt lists. \n\n[![GitHub issues](https://img.shields.io/github/issues/lightglitch/seekerr.svg?maxAge=60\u0026style=flat-square)](https://github.com/lightglitch/seekerr/issues)\n[![GitHub pull requests](https://img.shields.io/github/issues-pr/lightglitch/seekerr.svg?maxAge=60\u0026style=flat-square)](https://github.com/lightglitch/seekerr/pulls)\n[![MIT](https://img.shields.io/badge/license-MIT-blue.svg?maxAge=60\u0026style=flat-square)](https://opensource.org/licenses/MIT)\n[![Copyright 2020-2022](https://img.shields.io/badge/copyright-2022-blue.svg?maxAge=60\u0026style=flat-square)](https://github.com/lightglitch/seekerr)\n[![Github Releases](https://img.shields.io/github/downloads/lightglitch/seekerr/total.svg?maxAge=60\u0026style=flat-square)](https://github.com/lightglitch/seekerr/releases/)\n\n---\n\n- [seekerr](#seekerr)\n  - [Introduction](#introduction)\n  - [Configuration](#configuration)\n    - [Sample Configuration](#sample-configuration)\n    - [CRON](#cron)\n    - [Services](#services)\n    - [Filters](#filters)\n    - [Lists](#lists)\n    - [Notifications](#notifications)\n    - [Logger](#logger)\n  - [Usage](#usage)\n    - [Docker](#docker)\n    - [General](#general)\n    - [Import](#import)\n    - [TODO](#todo)\n    - [References and Inspiration](#references-and-inspiration)\n\n## Introduction\n\nSeekerr uses RSS, IMDB and Trakt.tv lists to find movies and adds them to Radarr.\n\nExamples of supported lists:\n\n- RSS\n  - [RARBG](https://rarbgprx.org/rssdd_magnet.php?category=44)\n\n- IMDB\n  - [New Releases](https://www.imdb.com/list/ls016522954/?sort=list_order,asc\u0026st_dt=\u0026mode=detail\u0026page=1\u0026title_type=movie\u0026user_rating=6.0%2C\u0026ref_=ttls_ref_rt_usr)\n- Trakt\n  - Official Trakt Lists\n    - Trending\n    - Popular\n    - Anticipated\n    - Box Office\n  - Public Lists\n    - [Movist App](https://trakt.tv/users/movistapp/lists/now-playing?sort=rank,asc)\n\n## Configuration\n\n### Sample Configuration\n\n```yaml\nlogger:\n  level: info # panic,fatal,error,warn,info,debug,trace\n  timeFormat: \"\" # golang time format\n  color: true # active color on console\n  human: true # store file log as human readable\n  file: \"var/log/seekerr.%Y%m%d.log\" # %Y%m%d is used for rotation. leave empty to disable file log\n\ncron: \"0 */2 * * *\"\n\nservices:\n  resty:\n    debug: false\n    timeout: 20s #golang duration\n    retry: 0 # zero for no retries\n    retryWaitTime: 1s\n    retryMaxWaitTime: 10s\n\n  trakt:\n    apiKey: \"\"\n\n  omdb:\n    apiKey: \"\"\n\n  guessIt:\n    type: \"command\" # webservice\n    path: \"guessit\"\n    # url: \"http://192.168.1.100:5000/\"\n\n  radarr:\n    url: \"http://192.168.1.100:7878/\"\n    apiKey: \"\"\n    rootFolder: \"/movies/\"\n    quality: \"Bluray\"\n    minimumAvailability: \"inCinemas\"\n    monitored: true\n    searchForMovie: false\n\nnotifications:\n  gotify:\n    webhook: \"http://192.168.1.100:8070/message?token=XXXX\"\n    events: [\"ADDED_MOVIE\",\"REVISION_MOVIE\",\"FINISH_ALL_FEEDS\"] # START_FEED, FINISH_FEED, FINISH_ALL_FEEDS, ADDED_MOVIE, leave empty for all\n\n  slack:\n    webhook: \"https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX\"\n    events: [\"ADDED_MOVIE\",\"REVISION_MOVIE\",\"FINISH_ALL_FEEDS\"] # START_FEED, FINISH_FEED, FINISH_ALL_FEEDS, ADDED_MOVIE, leave empty for all\n\nimporter:\n  revision: false\n  filter:\n    limit: 100 # limit the movies to process on each list\n    exclude:\n      - 'CountRatings \u003c 2 || Runtime \u003c 20 || ImdbVotes \u003c 1000 || Year \u003e Now().Year()'\n      - 'Ratings.Imdb != 0 \u0026\u0026 Ratings.Imdb \u003c 7'\n      - 'Ratings.Metacritic != 0 \u0026\u0026 Ratings.Metacritic \u003c 70'\n      - 'Ratings.RottenTomatoes != 0 \u0026\u0026 Ratings.RottenTomatoes \u003c 75'\n    revision:\n      - 'CountRatings \u003c 2 || Runtime \u003c 20 || ImdbVotes \u003c 1000 || Year \u003e Now().Year()'\n      - 'Ratings.Imdb != 0 \u0026\u0026 Ratings.Imdb \u003c 6.5'\n      - 'Ratings.Metacritic != 0 \u0026\u0026 Ratings.Metacritic \u003c 60'\n      - 'Ratings.RottenTomatoes != 0 \u0026\u0026 Ratings.RottenTomatoes \u003c 65'\n\n  lists:\n    rarbg:\n      type: \"rss\" # rss | trakt | imdb\n      url: \"https://rarbgprx.org/rssdd_magnet.php?category=44\"\n      guessIt: true\n\n    imdb:\n      type: \"imdb\" # rss | trakt | imdb\n      url: \"https://www.imdb.com/list/ls016522954/?sort=list_order,asc\u0026st_dt=\u0026mode=detail\u0026page=1\u0026title_type=movie\u0026user_rating=6.0%2C\u0026ref_=ttls_ref_rt_usr\"\n\n    traktTrending:\n      type: \"trakt\" # rss | trakt | imdb\n      # special urls trakt://movies/trending, trakt://movies/popular, trakt://movies/anticipated, trakt://movies/boxoffice\n      url: \"trakt://movies/trending\"\n\n    traktPublic:\n      type: \"trakt\" # rss | trakt | imdb\n      url: \"https://trakt.tv/users/movistapp/lists/now-playing?sort=rank,asc\"\n```\n### CRON\n\nAdded a new cron command that runs the import based on the schedule in the configuration:\n  ```yaml\n  cron: \"0 */2 * * *\"\n  ```\n\nA cron expression represents a set of times, using 5 space-separated fields.\n\nField name   | Mandatory? | Allowed values  | Allowed special characters\n----------   | ---------- | --------------  | --------------------------\nMinutes      | Yes        | 0-59            | * / , -\nHours        | Yes        | 0-23            | * / , -\nDay of month | Yes        | 1-31            | * / , - ?\nMonth        | Yes        | 1-12 or JAN-DEC | * / , -\nDay of week  | Yes        | 0-6 or SUN-SAT  | * / , - ?\n\nNote: Month and Day-of-week field values are case insensitive. \"SUN\", \"Sun\", and \"sun\" are equally accepted.\n\nThen execute the following command:\n\n```\nseekerr cron\n```\n\n\n### Services\n\n- Radarr\n\n  Radarr configuration.\n  \n  ```yaml\n    radarr:\n      url: \"http://192.168.1.100:7878/\"\n      apiKey: \"\"\n      rootFolder: \"/movies/\"\n      quality: \"Bluray\"\n      minimumAvailability: \"inCinemas\"\n      monitored: true\n      searchForMovie: false\n  ```\n\n  `apiKey` - Radarr's API Key.\n  \n  `quality` - Quality Profile that movies are assigned to.\n  \n  `minimumAvailability` - The minimum availability the movies are set to.\n  \n  - Choices are `announced`, `inCinemas`, `released` (Physical/Web), or `predb`.\n\n  `rootFolder` - Root folder for movies.\n  \n  `url` - Radarr's URL.\n  \n  - Note: If you have URL Base enabled in Radarr's settings, you will need to add that into the URL as well.\n  \n- OMDB\n\n  [OMDb](https://www.omdbapi.com/) Authentication info.  \n  Needed to fetch movie ratings and filter out movies.\n\n  ```yaml\n    omdb:\n      apiKey: \"\"\n  ```\n\n- Trakt\n\n  1. Create a Trakt application by going [here](https://trakt.tv/oauth/applications/new)\n  \n  2. Enter a name for your application; for example `seekerr`\n  \n  3. Enter `urn:ietf:wg:oauth:2.0:oob` in the `Redirect uri` field.\n  \n  4. Click \"SAVE APP\".\n  \n  5. Open the seekerr configuration file `seekerr.yaml` and insert your Trakt API Key:\n  \n      ```yaml\n        trakt:\n          apiKey: \"your_trakt_api_key\"\n      ```\n\n- GuessIt\n\n  GuessIt it's used to parse the title of RSS item and obtain the correct movie name and year.\n  By knowing the correct movie we can fetch the ratings from OMDB.  \n  It can be configured as a command line or as rest service.\n  \n  ```yaml\n    guessIt:\n      type: \"command\" # webservice\n      path: \"guessit\"\n      # url: \"http://192.168.1.100:5000/\"\n  ```\n\n- Resty\n\n  ```yaml\n    resty:\n      debug: false\n      timeout: 20s #golang duration\n      retry: 0 # zero for no retries\n      retryWaitTime: 1s\n      retryMaxWaitTime: 10s\n  ```\n\n### Filters\n\nThe filters can be configured globally and per list, the list configuration takes precedence over the global filter configuration.\n\n```yaml\n  revision: false\n  filter:\n    limit: 100 # limit the movies to process on each list\n    exclude:\n      - 'CountRatings \u003c 2 || Runtime \u003c 20 || ImdbVotes \u003c 1000 || Year \u003e Now().Year()'\n      - 'Ratings.Imdb != 0 \u0026\u0026 Ratings.Imdb \u003c 7'\n      - 'Ratings.Metacritic != 0 \u0026\u0026 Ratings.Metacritic \u003c 70'\n      - 'Ratings.RottenTomatoes != 0 \u0026\u0026 Ratings.RottenTomatoes \u003c 75'\n    revision:\n      - 'CountRatings \u003c 2 || Runtime \u003c 20 || ImdbVotes \u003c 1000 || Year \u003e Now().Year()'\n      - 'Ratings.Imdb != 0 \u0026\u0026 Ratings.Imdb \u003c 6.5'\n      - 'Ratings.Metacritic != 0 \u0026\u0026 Ratings.Metacritic \u003c 60'\n      - 'Ratings.RottenTomatoes != 0 \u0026\u0026 Ratings.RottenTomatoes \u003c 65'\n```\n\n  `revision` - Notify me about movies that are not approved but match revision rules\n\n  `limit` - Process only this number movies in the list\n\n  `exclude` - An list of expressions that exclude the movie from being added\n\n### Lists\n\nThe base configuration for the lists is:\n\n```yaml\n  name_of_list:\n    # The type of the feed, support 3 types\n    type: rss | trakt | imdb\n    # special urls for trakt type trakt://movies/trending, trakt://movies/popular, trakt://movies/anticipated, trakt://movies/boxoffice\n    url: \"http://feed-url.com\"\n    guessIt: true # only for rss and if it's necessary to parse the title to get the correct movie name and year\n    # you can override the global filters for a specific feed\n    filter:  \n```\n\n- RSS\n\n```yaml\n    rarbg:\n      type: \"rss\"\n      url: \"https://rarbgprx.org/rssdd_magnet.php?category=44\"\n      guessIt: true\n```\n  \n- IMDB\n\n```yaml\n    imdb:\n      type: \"imdb\"\n      url: \"https://www.imdb.com/list/ls016522954/?sort=list_order,asc\u0026st_dt=\u0026mode=detail\u0026page=1\u0026title_type=movie\u0026user_rating=6.0%2C\u0026ref_=ttls_ref_rt_usr\"\n```\n\n- Trakt\n\n```yaml\n    traktTrending:\n      type: \"trakt\" # rss | trakt | imdb\n      # special urls trakt://movies/trending, trakt://movies/popular, trakt://movies/anticipated, trakt://movies/boxoffice\n      url: \"trakt://movies/trending\"\n\n    traktPublic:\n      type: \"trakt\" # rss | trakt | imdb\n      url: \"https://trakt.tv/users/movistapp/lists/now-playing?sort=rank,asc\"\n```\n\n### Notifications\n\n- Gotify\n\n```yaml\nnotifications:\n  gotify:\n    webhook: \"http://192.168.1.100:8070/message?token=XXXX\"\n    events: [\"ADDED_MOVIE\",\"REVISION_MOVIE\",\"FINISH_ALL_FEEDS\"] # START_FEED, FINISH_FEED, FINISH_ALL_FEEDS, ADDED_MOVIE, leave empty for all\n```\n\n- Slack\n\n```yaml\n  slack:\n    webhook: \"https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX\"\n    events: [\"ADDED_MOVIE\",\"REVISION_MOVIE\",\"FINISH_ALL_FEEDS\"] # START_FEED, FINISH_FEED, FINISH_ALL_FEEDS, ADDED_MOVIE, leave empty for all\n```\n\n  Slack notification example:\n  \n  ![slack](https://user-images.githubusercontent.com/196953/78181877-fd144a00-745c-11ea-9832-0cdfbcb3be2c.jpg)\n\n### Logger\n\n```yaml\nlogger:\n  level: info # panic,fatal,error,warn,info,debug,trace\n  timeFormat: \"\" # golang time format\n  color: true # active color on console\n  human: true # store log as human readable\n  file: \"var/log/seekerr.%Y%m%d.log\" # %Y%m%d is used for rotation. leave empty to disable file log\n```\n\n## Usage\n\n### Docker\n\nUsing stable releases:\n\n```\ndocker run -d --name='Seekerr' -v '\u003cpath to data\u003e':'/config':'rw' 'lightglitch/seekerr:stable'\n```\n\nUsing master:\n\n```\ndocker run -d --name='Seekerr' -v '\u003cpath to data\u003e':'/config':'rw' 'lightglitch/seekerr:latest'\n```\n\nYou need to create your config file before running the docker image.\n\n### General\n\n```\nseekerr\n```\n\n```\nTool to add new movies to Radarr using internet lists.\nYou can filter, exclude and define the minimum ratings to add the movies you pretend.\n\nUsage:\n  seekerr [command]\n\nAvailable Commands:\n  help        Help about any command\n  import      Import the movies found in the lists to radarr.\n  version     Print the version number of seekerr\n\nFlags:\n      --config string   config file (default is config/seekerr.yaml)\n  -h, --help            help for seekerr\n\nUse \"seekerr [command] --help\" for more information about a command.\n```\n\n### Import\n\n```\nseekerr import --help\n```\n\n```\nImport the movies found in the lists to radarr.\n\nUsage:\n  seekerr import [flags]\n\nFlags:\n  -h, --help          help for import\n  -l, --list string   The name of the list to import (default \"all\")\n  -r, --revision      Notify me about movies that are not approved but match revision rules\n\nGlobal Flags:\n      --config string   config file (default is config/seekerr.yaml)\n```\n\n`-l`, `--list` -  The name of the list that is configured in the file seekerr.yaml. If empty imports all lists.\n\n\n### Cron\n\n```\nseekerr cron --help\n```\n\n```\nImport the movies found in the lists to radarr using the schedule on the config file.\n\nUsage:\n  seekerr cron [flags]\n\nFlags:\n  -h, --help              help for cron\n  -s, --schedule string   Run with this cron schedule\n\nGlobal Flags:\n      --config string   config file (default is config/seekerr.yaml)\n```\n\n### TODO\n\n- [ ] Tests\n- [ ] Support Series and Sonarr\n\n### References and Inspiration\n\n- [traktarr](https://github.com/l3uddz/traktarr/): Traktarr uses Trakt.tv to find shows and movies to add in to Sonarr and Radarr, respectively.\n- [Radarr](https://github.com/Radarr/Radarr): A fork of Sonarr to work with movies à la Couchpotato.\n\n\n- Seekerr logo used icons made by **phatplus** and **freepik** from [www.flaticon.com](https://www.flaticon.com/)\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flightglitch%2Fseekerr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flightglitch%2Fseekerr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flightglitch%2Fseekerr/lists"}