From: Samir Benmendil Date: Sun, 22 May 2022 00:54:37 +0000 (+0100) Subject: flexget: rework config using discover X-Git-Url: https://git.rmz.io/dotfiles.git/commitdiff_plain/7ed15ec6fa25102e97ea2d0ac0ebbbe81fa4fe9b?ds=sidebyside flexget: rework config using discover uses discover instead of rss feeds. --- diff --git a/flexget/config.yml b/flexget/config.yml index 95acb59..42f5ba5 100644 --- a/flexget/config.yml +++ b/flexget/config.yml @@ -4,21 +4,30 @@ web_server: port: 8081 templates: # {{{1 - torrents: # {{{2 - inputs: - - rss: { url: 'https://ezrss.it/feed/', silent: yes } - - rss: { url: 'http://publichd.se/rss.php', silent: yes } - - rss: { url: 'http://rss.bt-chat.com/?group=3', silent: yes } - - rss: { url: 'http://kickass.to/tv/?rss=1', silent: yes } - - rss: { url: 'http://showrss.info/feeds/all.rss', silent: yes } - # - rss: { url: 'http://www.torlock.com/television/rss.xml', silent: yes } - # - rss: { url: 'http://torrentz.eu/feed_verified?q=tv', silent: yes } - # - rss: { url: 'http://rss.thepiratebay.org/208', silent: yes } - transmission: - host: localhost - port: 9091 - path: /srv/torrents/done - ratio: 0.0 + 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 @@ -27,16 +36,16 @@ templates: # {{{1 url: '{?sabnzbd.url?}' - usenet-movies: # {{{2 + usenet_movies_rss: # {{{2 inputs: - - rss: { url: 'https://api.drunkenslug.com/rss?t=2040&dl=1&num=100{?drunkenslug.api?}', silent: yes } # Movies HD - - rss: { url: 'https://www.usenet-crawler.com/rss?t=2040&dl=1&num=100{?crawler.api?}', silent: yes } # Movies HD + - 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-tv: # {{{2 + usenet_series_rss: # {{{2 inputs: - - rss: { url: 'https://api.drunkenslug.com/rss?t=5030,5040&dl=1&num=100{?drunkenslug.api?}', silent: yes } # Movies HD - - rss: { url: 'https://www.usenet-crawler.com/rss?t=5030,5040&dl=1&num=100{?crawler.api?}', silent: yes } # TV SD/HD + - 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 @@ -65,20 +74,15 @@ templates: # {{{1 - \[facepalm\]: {from: title} - \bASAP\b: {from: title} - \b Go\): {from: title} # filter those misplaced french only movies - - \b(HEVC|[xXhH]265)\b: {from: title} # don't get x265/HEVC + - 'nl.subs': {from: title} # no dutch subtitles series: # {{{2 set: category: 'series' - series: - settings: - default: &default_settings - identified_by: ep - timeframe: 12 hours - target: 1080p webdl h264 dts - quality: 720p+ h264+ - upgrade: yes + priority: '0' # normal + trakt_lookup: yes + thetvdb_lookup: yes exists_series: path: - '/mnt/series/{{tvdb_series_name}}' @@ -88,192 +92,152 @@ templates: # {{{1 max: 10000 strict: yes - series-list: # {{{2 - series: - default: - - 8 out of 10 cats - - always sunny in philadelphia - - american dad - - archer 2009 - - arrested development - - better call saul - - black mirror - - boardwalk empire - - breaking bad - - broadchurch - - burn notice - - chuck - - community - - danger 5: { quality: 720p+ } - - dexter - - dexter new blood - - dirk gently's holistic detective agency - - doctor who 2005 - - downton abbey - - eureka - - family guy - - fargo - - foundation - - foyle's war - - futurama - - game of thrones: { timeframe: 9 hours, quality: dd5.1+ } - - homeland - - house of cards 2013: { alternate_name: house of cards us } - - how i met your mother - - la casa de papel - - last week tonight with john oliver: { timeframe: 10 hours } - - masters of sex - - my little pony - - mythbusters - - narcos - - peaky blinders - - qi: { special_ids: 'uncut' } - - ray donovan - - red dwarf - - rick and morty - - sherlock - - suits - - the big bang theory - - the blacklist - - the blacklist redemption - - the book of boba fett - - the boys - - the cleveland show - - the crown - - the expanse - - the great: { exact: yes } - - the man in the high castle - - the mandalorian - - the umbrella academy - - the witcher - - the walking dead - - the wheel of time - - the wire: { quality: 720p+ } - - two and a half men - - vinyl - - westworld: { timeframe: 9 hours, quality: dd5.1+ } - - - series-trakt: # {{{2 + + 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: - trakt_list: - username: '{?trakt.username?}' - account: '{?trakt.account?}' - list: followlist - type: shows - settings: *default_settings + 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 - series-trakt-backfill: # {{{2 + newznab_series_backfill: # {{{2 + domain_delay: + api.drunkenslug.com: 5 seconds configure_series: from: - trakt_list: - username: '{?trakt.username?}' - account: '{?trakt.account?}' - list: backfill - type: shows - settings: # *default_settings + sonarr_list: + <<: *sonarr + only_monitored: yes + include_data: yes + settings: + exact: yes identified_by: ep - quality: 720p+ h264+ tracking: backfill + quality: 720p-1080p webrip+ h264+ discover: - interval: 1 hours + interval: 10 minutes what: - - next_trakt_episodes: - username: '{?trakt.username?}' - account: '{?trakt.account?}' - list: backfill - context: collected - position: next + - next_sonarr_episodes: + <<: *sonarr + only_monitored: yes + include_ended: yes from: - - newznab: - url: 'https://api.drunkenslug.com/api?apikey={?drunkenslug.apikey?}&t=tvsearch&cat=5030,5040&extended=1' - category: tv - all_series: yes + - 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: '-2' + priority: '-1' # low exists_movie: path: - '/mnt/movies' allow_different_qualities: better type: files - lookup: imdb - - - movies-imdb: # {{{2 - imdb_lookup: yes - require_field: imdb_url - imdb: - min_score: 7.5 - min_votes: 30000 - - log_filter: - - message: "because of rule(s)" - plugin: imdb - - movies-1080p: # {{{2 - quality: 1080p bluray+ h264+ - content_size: - min: 3000 - max: 15000 - strict: yes - - movies-720p: # {{{2 - quality: 720p+ webdl+ h264+ - delay: 14 days - content_size: - min: 1000 - max: 10000 - strict: yes - # movies-discover-queue: # {{{2 - # movie_queue: accept - # discover: - # what: - # - emit_movie_queue: yes - # from: - # - newznab: - # url: 'https://www.usenet-crawler.com/api?apikey={?crawler.apikey?}&t=movie&extended=1&cat=2040' - # category: movie - # interval: 7 days # search each entry only once a week + 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 + trakt_add_collection: # {{{2 list_add: - trakt_list: - username: '{?trakt.username?}' account: '{?trakt.account?}' list: collection - move-series: # {{{2 + 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 + - trakt_add_collection disable: - retry_failed - seen - seen_info_hash no_entries_ok: yes - - regexp: - reject: - - '[Ss]ample' - - # guessit can extract info from full paths which may contain more info - # manipulate: - # - title: - # from: location - parsing: series: guessit - + regexp: { reject: ['[Ss]ample'] } all_series: parse_only: yes accept_all: yes @@ -281,7 +245,6 @@ templates: # {{{1 require_field: - tvdb_season - tvdb_episode - set: destination: '/mnt/series' folder: "{{tvdb_series_name}}/{% if tvdb_season == 0 %}Specials{% else %}Season {{tvdb_season}}{% endif %}" @@ -290,173 +253,282 @@ templates: # {{{1 to: "/mnt/series/{{folder}}" rename: "{{filename}}" clean_source: 100 # removes dir if < [N] MB - - # log: "<<<{{folder}}/{{filename}}>>>" + along: + extensions: [sub, srt] + subdirs: [Subs] exec: - echo "<<<{{folder}}/{{filename}}>>>" - touch "{{destination}}/{{folder}}/{{filename}}{{location|pathext}}" - digest: move-tasks - move-movies: # {{{2 + move_movies: # {{{2 manual: yes template: - - trakt-add-collection + - trakt_add_collection disable: - retry_failed - seen - seen_info_hash no_entries_ok: yes - - regexp: - reject: - - '[Ss]ample' - - # guessit can extract info from full paths which may contain more info - # manipulate: - # - title: - # from: location - + regexp: { reject: ['[Ss]ample'] } parsing: movie: guessit - - imdb_lookup: yes + tmdb_lookup: true accept_all: yes require_field: - - imdb_name - - imdb_year - + - tmdb_name + - tmdb_year set: destination: '/mnt/movies' - filename: "{{imdb_name}} ({{imdb_year}}){{'{'}}{{quality|replace(' ','}{')}}{{'}'}}[en]" + 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}}" - digest: move-tasks + + + 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 - - series-list - - series-trakt - - filters - - usenet - - usenet-tv - - - # dl-series-trakt-backfill: # {{{2 - # priority: 110 - # template: - # - series - # - series-trakt-backfill - # - filters - # - usenet - # digest: backfill - - - # dl-movies-trakt: # {{{2 - # priority: 10 - # trakt_list: - # username: '{?trakt.username?}' - # account: '{?trakt.account?}' - # list: watchlist - # type: movies - # accept_all: yes - # movie_queue: add - - - # dl-movies-trakt-remove: # {{{2 - # priority: 20 - # disable: - # - seen - # emit_movie_queue: yes - # crossmatch: - # from: - # - trakt_list: - # username: '{?trakt.username?}' - # account: '{?trakt.account?}' - # list: watchlist - # type: movies - # fields: [imdb_id] - # action: reject - # accept_all: yes - # movie_queue: remove - - - dl-movies-discover-queue-1080p: # {{{2 - priority: 100 - template: - - movies - - movies-discover-queue - - movies-1080p + - newznab_series_queue - filters - usenet - dl-movies-discover-queue-720p: # {{{2 + backfill-series: # {{{2 priority: 110 template: - - movies - - movies-discover-queue - - movies-720p + - series + - newznab_series_backfill - filters - usenet - - dl-movies-queue-1080p: # {{{2 + dl-movies: # {{{2 priority: 100 template: - movies - - movies-1080p + - newznab_movies_queue - filters - usenet - - usenet-movies - dl-movies-queue-720p: # {{{2 - priority: 110 + 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: - - movies - - movies-720p - - filters - - usenet - - usenet-movies + - 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 - dl-movies-imdb-1080p: # {{{2 - priority: 120 + sync-watchlist-series: # {{{2 + # get series from trakt watchlist and queue, and adds them to trakt queue and entry list + priority: 2 template: - - movies - - movies-imdb - - movies-1080p - - filters - - usenet - - usenet-movies - + - 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 - dl-movies-imdb-720p: # {{{2 - priority: 130 + sync-series-begin: # {{{2 + priority: 3 + disable: seen template: - - movies - - movies-imdb - - movies-720p - - filters - - usenet - - usenet-movies + - 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 + - move_series filesystem: path: - /srv/usenet/done/series @@ -468,7 +540,7 @@ tasks: # {{{1 move-series-torrents: # {{{2 manual: yes template: - - move-series + - move_series filesystem: path: - /srv/torrents/done @@ -480,7 +552,8 @@ tasks: # {{{1 move-movies-usenet: # {{{2 manual: yes template: - - move-movies + - move_movies + - trakt_remove_movie_queue filesystem: path: - /srv/usenet/done/movies @@ -491,7 +564,8 @@ tasks: # {{{1 move-movies-torrents: # {{{2 manual: yes template: - - move-movies + - move_movies + - trakt_remove_movie_queue filesystem: path: - /srv/torrents/done @@ -502,99 +576,72 @@ tasks: # {{{1 seed-series-db: # {{{2 manual: yes seen: local - - filesystem: - path: - - '/mnt/series' - recursive: yes - retrieve: files - regexp: '.*\.(avi|mkv|mp4|webm|m4v)$' - - #TODO use guessit like in move-series - manipulate: - - title: - from: location - replace: - regexp: '.*/([^/]+)/[^/]+/(\d+)(?:x(\d+))+([^/]*)\.[^.]+$' - format: '\1 S\2E\3\4' - - title: - replace: - regexp: '\[.*\]' - format: '' - - title: - replace: - regexp: '[\(\)\{\}]' - format: ' ' - - metainfo_series: yes - thetvdb_lookup: yes - all_series: - tracking: no - assume_quality: 480p + 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 - require_field: - - tvdb_id - seed-trakt-series: # {{{2 + 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: - - trakt-add-collection - - filesystem: - path: - - '/mnt/series' - recursive: yes - retrieve: files - regexp: '.*\.(avi|mkv|mp4|webm|m4v)$' - - #TODO use guessit like in move-series - manipulate: - - title: - from: location - replace: - regexp: '.*/([^/]+)/[^/]+/(\d+)(?:x(\d+))+([^/]*)\.[^.]+$' - format: '\1 S\2E\3\4' - - title: - replace: - regexp: '\[.*\]' - format: '' - - title: - replace: - regexp: '[\(\)\{\}]' - format: ' ' - - metainfo_series: yes - thetvdb_lookup: yes - all_series: yes - assume_quality: 480p + - series_filesystem + # currently doesn't work and times out, need to patch to send in batches + # - trakt_add_collection accept_all: yes - require_field: - - tvdb_id - seed-trakt-movies: # {{{2 + 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: - - trakt-add-collection - filesystem: - path: - - '/mnt/movies' - recursive: yes - retrieve: files - regexp: '.*\.(avi|mkv|mp4|webm|m4v)$' - imdb_lookup: yes + - movies_filesystem + - trakt_add_collection accept_all: yes - require_field: - - imdb_id + + + 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: ['dl-*'] - schedule: - hour: '*' - minute: '48' + - tasks: ['sync-watchlist-series*', 'dl-*'] + interval: + hours: 1 + 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