-email:
- from: flexget@tardis
- to: ramsi@localhost
+variables: private.yml
-presets:
- tv:
+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:
- - "/mnt/Skaro/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:
- normal:
- timeframe: 12 hours
- target: 1080p webdl
- quality: 480p+
- upgrade: yes
-
- normal:
- - american dad
- - breaking bad
- - burn notice
- - chuck
- - dexter
- - doctor who
- - eureka
- - family guy
- - futurama
- - game of thrones
- - house
- - how i met your mother
- - my little pony
- - qi
- - ray donovan
- - red dwarf
- - the big bang theory
- - the cleveland show
- - the walking dead
- - two and a half men
- - weeds
-
- transmission:
- host: localhost
- port: 9091
- path: /mnt/Skaro/Torrents.flex
- removewhendone: yes
- ratio: 0.0
-
-tasks:
- tv-shows:
- priority: 1
- inputs:
- - rss: { url: 'https://www.ezrss.it/feed/', silent: yes }
- - rss: { url: 'http://rss.bt-chat.com/?group=3', silent: yes }
- - rss: { url: 'http://showrss.karmorra.info/feeds/all.rss', silent: yes }
- - rss: { url: 'http://kat.ph/tv/?rss=1', 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 }
- preset: tv
+ 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
- move-episodes:
- priority: 2
+ 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
- metainfo_series: 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
- # only reject files that have been seen by this task
- seen: local
+ 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}}"
+
- find:
- path: /mnt/Skaro/Torrents.flex
+ series_filesystem: # {{{2
+ filesystem:
+ path:
+ - '/mnt/series'
recursive: yes
- regexp: '.*\.(avi|mkv|mp4|mpg|divx)$'
+ 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
- regexp:
- reject:
- - '[Ss]ample'
- move:
- to: "/mnt/Skaro/Series/{{tvdb_series_name}}/Season {{tvdb_season}}/"
- filename: "{{tvdb_season}}x{{tvdb_episode|pad(2)}} {{tvdb_ep_name|replace('/','-')}} ({{tvdb_ep_air_date|formatdate('%Y')}}){{'{'}}{{quality|replace(' ','}{')}}{{'}'}}[en]{{location|pathext}}"
+ 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
+
- move-movies:
+ 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
- tmdb_lookup: yes
+ 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
- seen: local
+ 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)$'
+
- find:
- path: /mnt/Skaro/Torrents.flex
+ 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:
- to: "/mnt/Skaro/Movies"
- filename: "{{tmdb_name}} ({{tmdb_year}}){{'{'}}{{quality|replace(' ','}{')}}{{'}'}}[en]{{location|pathext}}"
+
+ 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