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
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
- \[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}}'
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
require_field:
- tvdb_season
- tvdb_episode
-
set:
destination: '/mnt/series'
folder: "{{tvdb_series_name}}/{% if tvdb_season == 0 %}Specials{% else %}Season {{tvdb_season}}{% endif %}"
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
move-series-torrents: # {{{2
manual: yes
template:
- - move-series
+ - move_series
filesystem:
path:
- /srv/torrents/done
move-movies-usenet: # {{{2
manual: yes
template:
- - move-movies
+ - move_movies
+ - trakt_remove_movie_queue
filesystem:
path:
- /srv/usenet/done/movies
move-movies-torrents: # {{{2
manual: yes
template:
- - move-movies
+ - move_movies
+ - trakt_remove_movie_queue
filesystem:
path:
- /srv/torrents/done
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