variables: private.yml web_server: port: 8081 templates: # {{{1 anchors: # {{{2 _trakt: &trakt account: '{?trakt.account?}' _sonarr: &sonarr base_url: '{?sonarr.url?}' api_key: '{?sonarr.api?}' port: 8989 _trakt_movie_queue: &trakt_movie_queue account: '{?trakt.account?}' list: movie-queue _newznab_series_search: &newznab_series_search url: '{?ds.api?}&t=tvsearch&cat=5040&extended=1' category: tv query: - tvdb_id - series_name - series_alternate_names _newznab_movie_search: &newznab_movie_search url: '{?ds.api?}&t=movie&cat=2040&extended=1' category: movie _series_settings: &series_settings identified_by: ep quality: 720p-1080p webrip+ h264+ exact: yes usenet: # {{{2 sabnzbd: key: '{?sabnzbd.key?}' url: '{?sabnzbd.url?}' usenet_movies_rss: # {{{2 inputs: - rss: { url: 'https://{?ds.rss?}&t=2040&dl=1&num=100', silent: yes } # Movies HD - rss: { url: 'https://{?uc.rss?}&t=2040&dl=1&num=100', silent: yes } # Movies HD usenet_series_rss: # {{{2 inputs: - rss: { url: 'https://{?ds.rss?}&t=5040&dl=1&num=100', silent: yes } # Series HD - rss: { url: 'https://{?uc.rss?}&t=5040&dl=1&num=100', silent: yes } # Series HD filters: # {{{2 content_filter: require: - '*.mkv' - '*.mp4' reject: - 'filename.mkv' - '*.rar' - '*.r0*' - '*.wmv' - '*.exe' regexp: reject: - \b3-?D\b: {from: title} - \btrailer\b: {from: title} # I've gotten a few trailers that matched as movies. VERY annoying - \bR5\b: {from: title} # The following are poor quality types that somehow got through the quality - \bWEBSCR\b: {from: title} # features usually due to the title including a keyword like "720p" as well - \bscreener\b: {from: title} - \bTS\b: {from: title} - \bCam\b: {from: title} - '{C_P}': {from: title} # The following are groups with poor quality releases - TrTd TeaM: {from: title} - \[TNTVillage\]: {from: title} - \[facepalm\]: {from: title} - \bASAP\b: {from: title} - \b Go\): {from: title} # filter those misplaced french only movies - 'nl.subs': {from: title} # no dutch subtitles - 'NIXON': {from: title} # rubbish futurama releases, wrong season numbering series: # {{{2 set: category: 'series' priority: '0' # normal trakt_lookup: yes thetvdb_lookup: yes exists_series: path: - '/mnt/series/{{tvdb_series_name}}' allow_different_qualities: better content_size: min: 100 max: 10000 strict: yes newznab_series_queue: # {{{2 domain_delay: api.drunkenslug.com: 5 seconds timeframe: wait: 10 hours # let series handle the accept on_reached: do_nothing target: 1080p webrip h264 configure_series: from: entry_list: trakt-series-queue settings: exact: yes identified_by: ep quality: 720p-1080p webrip+ h264+ sort_by: field: quality reverse: yes discover: interval: 50 minutes release_estimations: optimistic: 1 days what: - next_series_episodes: from_start: yes from: - newznab: *newznab_series_search max_reruns: 3 thetvdb_lookup: yes series: # this doesn't seem to override the timeframe set above - Last Week Tonight with John Oliver: { timeframe: 8 hours } - House of the Dragon: { timeframe: 8 hours } - Anne Rice's Mayfair Witches: alternate_name: - mayfair witches newznab_series_backfill: # {{{2 domain_delay: api.drunkenslug.com: 5 seconds configure_series: from: sonarr_list: <<: *sonarr only_monitored: yes include_data: yes settings: exact: yes identified_by: ep # tracking: backfill quality: 720p-1080p webrip+ h264+ discover: interval: 10 minutes what: - next_sonarr_episodes: <<: *sonarr only_monitored: yes include_ended: yes from: - newznab: *newznab_series_search seen: local series: generated_series: - money heist: alternate_name: la casa de papel - the ministry of time: alternate_name: - el ministerio del tiempo - the department of time sort_by: field: quality reverse: yes movies: # {{{2 set: category: 'movies' priority: '-1' # low exists_movie: path: - '/mnt/movies' allow_different_qualities: better type: files newznab_movies_queue: # {{{2 plugin_priority: # NOTE: currently not verified est_released_movies: 200 # prefer using tmdb release date est_movies_bluray: 100 # over bluray releases discover: interval: 1 hours what: - movie_list: trakt-movies-queue from: - newznab: *newznab_movie_search release_estimations: optimistic: 30 days quality: 720p-1080p webrip+ h264+ timeframe: wait: 1 day on_reached: accept target: 1080p webrip h264 best_quality: on_best: do_nothing on_lower: reject tmdb_lookup: true list_match: from: - movie_list: trakt-movies-queue trakt_add_collection: # {{{2 list_add: - trakt_list: account: '{?trakt.account?}' list: collection trakt_remove_movie_queue: # {{{2 # removes movie from queue and watchlist list_remove: - trakt_list: <<: *trakt list: movies-queue type: movies - trakt_list: <<: *trakt list: watchlist type: movies move_series: # {{{2 manual: yes template: - trakt_add_collection disable: - retry_failed - seen - seen_info_hash no_entries_ok: yes parsing: series: guessit regexp: { reject: ['[Ss]ample'] } all_series: parse_only: yes accept_all: yes thetvdb_lookup: yes require_field: - tvdb_season - tvdb_episode set: destination: '/mnt/series' folder: "{{tvdb_series_name}}/{% if tvdb_season == 0 %}Specials{% else %}Season {{tvdb_season}}{% endif %}" filename: "{{tvdb_season}}x{{tvdb_episode|pad(2)}} {{tvdb_ep_name|replace('/','-')}} ({{tvdb_ep_air_date|formatdate('%Y')}}){{'{'}}{{quality|replace(' ','}{')}}{{'}'}}[{{tvdb_language}}]" move: to: "/mnt/series/{{folder}}" rename: "{{filename}}" clean_source: 100 # removes dir if < [N] MB along: extensions: [sub, srt] subdirs: [Subs] exec: - echo "<<<{{folder}}/{{filename}}>>>" - touch "{{destination}}/{{folder}}/{{filename}}{{location|pathext}}" move_movies: # {{{2 manual: yes template: - trakt_add_collection disable: - retry_failed - seen - seen_info_hash no_entries_ok: yes regexp: { reject: ['[Ss]ample'] } parsing: movie: guessit tmdb_lookup: true accept_all: yes require_field: - tmdb_name - tmdb_year set: destination: '/mnt/movies' filename: "{{tmdb_name}} ({{tmdb_year}}){{'{'}}{{quality|replace(' ','}{')}}{{'}'}}[en]" move: to: "/mnt/movies" rename: "{{filename}}" clean_source: 100 # removes dir if < [N] MB along: extensions: [sub, srt] subdirs: [Subs] exec: - echo "<<<{{filename}}>>>" - touch "{{destination}}/{{filename}}{{location|pathext}}" series_filesystem: # {{{2 filesystem: path: - '/mnt/series' recursive: yes retrieve: files regexp: '.*\.(avi|mkv|mp4|webm|m4v)$' log_filter: # {{{3 - message: "Test mode" plugin: filesystem - message: "Title:" plugin: filesystem - message: "URL:" plugin: filesystem - message: "Filename:" plugin: filesystem - message: "Timestamp:" plugin: filesystem - message: "" plugin: manipulate - message: "" plugin: assume_quality level: verbose #}}} manipulate: - title: from: location replace: regexp: '.*/([^/]+)/[^/]+/(\d+)(?:x(\d+))+([^/]*?)(?:\[.*\])?\.[^.]+$' format: '\1 S\2E\3\4' - title: replace: regexp: '[][(){}]' format: ' ' set: collected_at: "{{created}}" parsing: series: guessit metainfo_series: yes require_field: - series_name assume_quality: 480p movies_filesystem: # {{{2 filesystem: path: - '/mnt/movies' recursive: yes retrieve: files regexp: '.*\.(avi|mkv|mp4|webm|m4v)$' tmdb_lookup: true require_field: - tmdb_id sync_series_trakt: # {{{2 plugin_priority: # thetvdb_lookup before set thetvdb_lookup: 110 set: 100 all_series: parse_only: yes # lookup tvdb info thetvdb_lookup: yes no_entries_ok: yes # replace title with tvdb_series_name set: title: "{{tvdb_series_name}}" series_name: "{{tvdb_series_name}}" name: "{{tvdb_series_name}}" accept_all: yes disable: seen tasks: # {{{1 parse-series: # {{{2 # This is used by flexget.py to get the series/episode id manual: yes all_series: parse_only: yes accept_all: yes disable: [seen] dl-series: # {{{2 priority: 100 template: - series - newznab_series_queue - filters - usenet backfill-series: # {{{2 priority: 110 template: - series - newznab_series_backfill - filters - usenet dl-movies: # {{{2 priority: 100 template: - movies - newznab_movies_queue - filters - usenet sync-watchlist-series-episodes: # {{{2 # get episodes from trakt watchlist and adds them to trakt queue # and sets the series_begin to the given episode. priority: 1 disable: seen template: - sync_series_trakt trakt_list: <<: *trakt list: watchlist type: episodes set_series_begin: yes list_remove: - trakt_list: <<: *trakt list: watchlist type: episodes list_add: - trakt_list: <<: *trakt list: series-queue type: shows - trakt_list: <<: *trakt list: watchlist type: shows sync-watchlist-series: # {{{2 # get series from trakt watchlist and queue, and adds them to trakt queue and entry list priority: 2 template: - sync_series_trakt list_clear: what: - entry_list: trakt-series-queue inputs: - trakt_list: <<: *trakt list: watchlist type: shows - trakt_list: <<: *trakt list: series-queue type: shows if: # if series name contains special characters - trakt_series_name|asciify|strip_symbols != trakt_series_name: set: # set alternate_name with special chars removed configure_series_alternate_name: "{{trakt_series_name|asciify|strip_symbols}}" #FIXME doesn't work for discover, no search is emited for alternate_name # worth a patch? # Maybe that's a newznab search plugin functionality, I've patched it in there for now. disable: seen list_add: - trakt_list: <<: *trakt list: series-queue type: shows - entry_list: trakt-series-queue sync-series-begin: # {{{2 priority: 3 disable: seen template: - sync_series_trakt configure_series: from: filesystem: path: - '/mnt/series' retrieve: dirs next_trakt_episodes: <<: *trakt list: collection context: collected accept_all: yes set_series_begin: yes sync-watchlist-movies: # {{{2 # get movies from trakt watchlist and adds them to flexget movie queue priority: 1 list_clear: what: - movie_list: trakt-movies-queue inputs: - trakt_list: <<: *trakt list: watchlist type: movies - trakt_list: <<: *trakt list: movies-queue type: movies accept_all: yes list_add: - movie_list: trakt-movies-queue - trakt_list: <<: *trakt list: movies-queue type: movies disable: [seen] _sync-movies-collected-trakt: # {{{2 # this is expensive, don't run often manual: yes priority: 1 list_clear: what: - movie_list: movies-collected-trakt trakt_list: account: '{?trakt.account?}' list: collection type: movies list_add: - movie_list: movies-collected-trakt accept_all: yes disable: [seen] move-series-usenet: # {{{2 manual: yes template: - move_series filesystem: path: - /srv/usenet/done/series recursive: yes retrieve: files regexp: '.*\.(avi|mkv|mp4|mpg|divx|webm|flv)$' move-series-torrents: # {{{2 manual: yes template: - move_series filesystem: path: - /srv/torrents/done recursive: yes retrieve: files regexp: '.*\.(avi|mkv|mp4|mpg|divx|webm|flv)$' move-movies-usenet: # {{{2 manual: yes template: - move_movies - trakt_remove_movie_queue filesystem: path: - /srv/usenet/done/movies recursive: yes regexp: '.*\.(mkv|avi|mp4)$' move-movies-torrents: # {{{2 manual: yes template: - move_movies - trakt_remove_movie_queue filesystem: path: - /srv/torrents/done recursive: yes regexp: '.*\.(mkv|avi|mp4)$' seed-series-db: # {{{2 manual: yes seen: local template: - series_filesystem configure_series: from: # entry_list: series-trakt sonarr_list: <<: *sonarr only_monitored: yes settings: # tracking: no identified_by: ep accept_all: yes seed-series-trakt: # {{{2 # can also be used to learn and seed local db # since adding to trakt doesn't work that is the only usage atm manual: yes seen: local configure_series: from: filesystem: path: - '/mnt/series' retrieve: dirs template: - series_filesystem # currently doesn't work and times out, need to patch to send in batches # - trakt_add_collection accept_all: yes seed-movies-trakt: # {{{2 # this will result in an error since the request is soo long # but it seems that the data is still uploaded fully and updated manual: yes seen: local template: - movies_filesystem - trakt_add_collection accept_all: yes trakt-copy-list: # {{{2 manual: yes trakt_list: <<: *trakt list: series-queue type: shows accept_all: yes list_add: - trakt_list: <<: *trakt list: series-queue-backup type: shows schedules: # {{{1 - tasks: ['sync-watchlist-series*', 'dl-series'] interval: hours: 1 jitter: 120 # seconds - tasks: ['dl-movies'] interval: hours: 2 jitter: 120 # seconds - tasks: ['sync-watchlist-movies'] interval: hours: 3 # needs to be 2h+ to avoid trakt_list cache jitter: 120 # seconds # vim: sts=2 ts=2 sw=2 et