]> git.rmz.io Git - dotfiles.git/blob - flexget/config.yml
flexget: rework config using discover
[dotfiles.git] / flexget / config.yml
1 variables: private.yml
2
3 web_server:
4 port: 8081
5
6 templates: # {{{1
7 anchors: # {{{2
8 _trakt: &trakt
9 account: '{?trakt.account?}'
10 _sonarr: &sonarr
11 base_url: '{?sonarr.url?}'
12 api_key: '{?sonarr.api?}'
13 port: 8989
14 _trakt_movie_queue: &trakt_movie_queue
15 account: '{?trakt.account?}'
16 list: movie-queue
17 _newznab_series_search: &newznab_series_search
18 url: '{?ds.api?}&t=tvsearch&cat=5040&extended=1'
19 category: tv
20 query:
21 - tvdb_id
22 - series_name
23 - series_alternate_names
24 _newznab_movie_search: &newznab_movie_search
25 url: '{?ds.api?}&t=movie&cat=2040&extended=1'
26 category: movie
27 _series_settings: &series_settings
28 identified_by: ep
29 quality: 720p-1080p webrip+ h264+
30 exact: yes
31
32
33 usenet: # {{{2
34 sabnzbd:
35 key: '{?sabnzbd.key?}'
36 url: '{?sabnzbd.url?}'
37
38
39 usenet_movies_rss: # {{{2
40 inputs:
41 - rss: { url: 'https://{?ds.rss?}&t=2040&dl=1&num=100', silent: yes } # Movies HD
42 - rss: { url: 'https://{?uc.rss?}&t=2040&dl=1&num=100', silent: yes } # Movies HD
43
44
45 usenet_series_rss: # {{{2
46 inputs:
47 - rss: { url: 'https://{?ds.rss?}&t=5040&dl=1&num=100', silent: yes } # Series HD
48 - rss: { url: 'https://{?uc.rss?}&t=5040&dl=1&num=100', silent: yes } # Series HD
49
50
51 filters: # {{{2
52 content_filter:
53 require:
54 - '*.mkv'
55 - '*.mp4'
56 reject:
57 - 'filename.mkv'
58 - '*.rar'
59 - '*.r0*'
60 - '*.wmv'
61 - '*.exe'
62 regexp:
63 reject:
64 - \b3-?D\b: {from: title}
65 - \btrailer\b: {from: title} # I've gotten a few trailers that matched as movies. VERY annoying
66 - \bR5\b: {from: title} # The following are poor quality types that somehow got through the quality
67 - \bWEBSCR\b: {from: title} # features usually due to the title including a keyword like "720p" as well
68 - \bscreener\b: {from: title}
69 - \bTS\b: {from: title}
70 - \bCam\b: {from: title}
71 - '{C_P}': {from: title} # The following are groups with poor quality releases
72 - TrTd TeaM: {from: title}
73 - \[TNTVillage\]: {from: title}
74 - \[facepalm\]: {from: title}
75 - \bASAP\b: {from: title}
76 - \b Go\): {from: title} # filter those misplaced french only movies
77 - 'nl.subs': {from: title} # no dutch subtitles
78
79
80 series: # {{{2
81 set:
82 category: 'series'
83 priority: '0' # normal
84 trakt_lookup: yes
85 thetvdb_lookup: yes
86 exists_series:
87 path:
88 - '/mnt/series/{{tvdb_series_name}}'
89 allow_different_qualities: better
90 content_size:
91 min: 100
92 max: 10000
93 strict: yes
94
95
96 newznab_series_queue: # {{{2
97 domain_delay:
98 api.drunkenslug.com: 5 seconds
99 timeframe:
100 wait: 10 hours
101 # let series handle the accept
102 on_reached: do_nothing
103 target: 1080p webrip h264
104 configure_series:
105 from:
106 entry_list: trakt-series-queue
107 settings:
108 exact: yes
109 identified_by: ep
110 quality: 720p-1080p webrip+ h264+
111 sort_by:
112 field: quality
113 reverse: yes
114 discover:
115 interval: 50 minutes
116 release_estimations:
117 optimistic: 1 days
118 what:
119 - next_series_episodes:
120 from_start: yes
121 from:
122 - newznab: *newznab_series_search
123 max_reruns: 3
124 thetvdb_lookup: yes
125 series:
126 # this doesn't seem to override the timeframe set above
127 - Last Week Tonight with John Oliver: { timeframe: 8 hours }
128 - House of the Dragon: { timeframe: 8 hours }
129 - Anne Rice's Mayfair Witches:
130 alternate_name:
131 - mayfair witches
132
133
134 newznab_series_backfill: # {{{2
135 domain_delay:
136 api.drunkenslug.com: 5 seconds
137 configure_series:
138 from:
139 sonarr_list:
140 <<: *sonarr
141 only_monitored: yes
142 include_data: yes
143 settings:
144 exact: yes
145 identified_by: ep
146 tracking: backfill
147 quality: 720p-1080p webrip+ h264+
148 discover:
149 interval: 10 minutes
150 what:
151 - next_sonarr_episodes:
152 <<: *sonarr
153 only_monitored: yes
154 include_ended: yes
155 from:
156 - newznab: *newznab_series_search
157 seen: local
158 series:
159 generated_series:
160 - money heist:
161 alternate_name: la casa de papel
162 - the ministry of time:
163 alternate_name:
164 - el ministerio del tiempo
165 - the department of time
166 sort_by:
167 field: quality
168 reverse: yes
169
170
171 movies: # {{{2
172 set:
173 category: 'movies'
174 priority: '-1' # low
175 exists_movie:
176 path:
177 - '/mnt/movies'
178 allow_different_qualities: better
179 type: files
180
181
182 newznab_movies_queue: # {{{2
183 plugin_priority: # NOTE: currently not verified
184 est_released_movies: 200 # prefer using tmdb release date
185 est_movies_bluray: 100 # over bluray releases
186 discover:
187 interval: 1 hours
188 what:
189 - movie_list: trakt-movies-queue
190 from:
191 - newznab: *newznab_movie_search
192 release_estimations:
193 optimistic: 30 days
194
195 quality: 720p-1080p webrip+ h264+
196 timeframe:
197 wait: 1 day
198 on_reached: accept
199 target: 1080p webrip h264
200 best_quality:
201 on_best: do_nothing
202 on_lower: reject
203 tmdb_lookup: true
204 list_match:
205 from:
206 - movie_list: trakt-movies-queue
207
208
209 trakt_add_collection: # {{{2
210 list_add:
211 - trakt_list:
212 account: '{?trakt.account?}'
213 list: collection
214
215
216 trakt_remove_movie_queue: # {{{2
217 # removes movie from queue and watchlist
218 list_remove:
219 - trakt_list:
220 <<: *trakt
221 list: movies-queue
222 type: movies
223 - trakt_list:
224 <<: *trakt
225 list: watchlist
226 type: movies
227
228
229 move_series: # {{{2
230 manual: yes
231 template:
232 - trakt_add_collection
233 disable:
234 - retry_failed
235 - seen
236 - seen_info_hash
237 no_entries_ok: yes
238 parsing:
239 series: guessit
240 regexp: { reject: ['[Ss]ample'] }
241 all_series:
242 parse_only: yes
243 accept_all: yes
244 thetvdb_lookup: yes
245 require_field:
246 - tvdb_season
247 - tvdb_episode
248 set:
249 destination: '/mnt/series'
250 folder: "{{tvdb_series_name}}/{% if tvdb_season == 0 %}Specials{% else %}Season {{tvdb_season}}{% endif %}"
251 filename: "{{tvdb_season}}x{{tvdb_episode|pad(2)}} {{tvdb_ep_name|replace('/','-')}} ({{tvdb_ep_air_date|formatdate('%Y')}}){{'{'}}{{quality|replace(' ','}{')}}{{'}'}}[{{tvdb_language}}]"
252 move:
253 to: "/mnt/series/{{folder}}"
254 rename: "{{filename}}"
255 clean_source: 100 # removes dir if < [N] MB
256 along:
257 extensions: [sub, srt]
258 subdirs: [Subs]
259 exec:
260 - echo "<<<{{folder}}/{{filename}}>>>"
261 - touch "{{destination}}/{{folder}}/{{filename}}{{location|pathext}}"
262
263
264 move_movies: # {{{2
265 manual: yes
266 template:
267 - trakt_add_collection
268 disable:
269 - retry_failed
270 - seen
271 - seen_info_hash
272 no_entries_ok: yes
273 regexp: { reject: ['[Ss]ample'] }
274 parsing:
275 movie: guessit
276 tmdb_lookup: true
277 accept_all: yes
278 require_field:
279 - tmdb_name
280 - tmdb_year
281 set:
282 destination: '/mnt/movies'
283 filename: "{{tmdb_name}} ({{tmdb_year}}){{'{'}}{{quality|replace(' ','}{')}}{{'}'}}[en]"
284 move:
285 to: "/mnt/movies"
286 rename: "{{filename}}"
287 clean_source: 100 # removes dir if < [N] MB
288 along:
289 extensions: [sub, srt]
290 subdirs: [Subs]
291 exec:
292 - echo "<<<{{filename}}>>>"
293 - touch "{{destination}}/{{filename}}{{location|pathext}}"
294
295
296 series_filesystem: # {{{2
297 filesystem:
298 path:
299 - '/mnt/series'
300 recursive: yes
301 retrieve: files
302 regexp: '.*\.(avi|mkv|mp4|webm|m4v)$'
303 log_filter: # {{{3
304 - message: "Test mode"
305 plugin: filesystem
306 - message: "Title:"
307 plugin: filesystem
308 - message: "URL:"
309 plugin: filesystem
310 - message: "Filename:"
311 plugin: filesystem
312 - message: "Timestamp:"
313 plugin: filesystem
314 - message: ""
315 plugin: manipulate
316 - message: ""
317 plugin: assume_quality
318 level: verbose #}}}
319 manipulate:
320 - title:
321 from: location
322 replace:
323 regexp: '.*/([^/]+)/[^/]+/(\d+)(?:x(\d+))+([^/]*?)(?:\[.*\])?\.[^.]+$'
324 format: '\1 S\2E\3\4'
325 - title:
326 replace:
327 regexp: '[][(){}]'
328 format: ' '
329 set:
330 collected_at: "{{created}}"
331 parsing:
332 series: guessit
333 metainfo_series: yes
334 require_field:
335 - series_name
336 assume_quality: 480p
337
338
339 movies_filesystem: # {{{2
340 filesystem:
341 path:
342 - '/mnt/movies'
343 recursive: yes
344 retrieve: files
345 regexp: '.*\.(avi|mkv|mp4|webm|m4v)$'
346 tmdb_lookup: true
347 require_field:
348 - tmdb_id
349
350
351 sync_series_trakt: # {{{2
352 plugin_priority: # thetvdb_lookup before set
353 thetvdb_lookup: 110
354 set: 100
355 all_series:
356 parse_only: yes
357 # lookup tvdb info
358 thetvdb_lookup: yes
359 no_entries_ok: yes
360 # replace title with tvdb_series_name
361 set:
362 title: "{{tvdb_series_name}}"
363 series_name: "{{tvdb_series_name}}"
364 name: "{{tvdb_series_name}}"
365 accept_all: yes
366 disable: seen
367
368
369 tasks: # {{{1
370 parse-series: # {{{2
371 # This is used by flexget.py to get the series/episode id
372 manual: yes
373 all_series:
374 parse_only: yes
375 accept_all: yes
376 disable: [seen]
377
378
379 dl-series: # {{{2
380 priority: 100
381 template:
382 - series
383 - newznab_series_queue
384 - filters
385 - usenet
386
387
388 backfill-series: # {{{2
389 priority: 110
390 template:
391 - series
392 - newznab_series_backfill
393 - filters
394 - usenet
395
396 dl-movies: # {{{2
397 priority: 100
398 template:
399 - movies
400 - newznab_movies_queue
401 - filters
402 - usenet
403
404
405 sync-watchlist-series-episodes: # {{{2
406 # get episodes from trakt watchlist and adds them to trakt queue
407 # and sets the series_begin to the given episode.
408 priority: 1
409 disable: seen
410 template:
411 - sync_series_trakt
412 trakt_list:
413 <<: *trakt
414 list: watchlist
415 type: episodes
416 set_series_begin: yes
417 list_remove:
418 - trakt_list:
419 <<: *trakt
420 list: watchlist
421 type: episodes
422 list_add:
423 - trakt_list:
424 <<: *trakt
425 list: series-queue
426 type: shows
427 - trakt_list:
428 <<: *trakt
429 list: watchlist
430 type: shows
431
432
433 sync-watchlist-series: # {{{2
434 # get series from trakt watchlist and queue, and adds them to trakt queue and entry list
435 priority: 2
436 template:
437 - sync_series_trakt
438 list_clear:
439 what:
440 - entry_list: trakt-series-queue
441 inputs:
442 - trakt_list:
443 <<: *trakt
444 list: watchlist
445 type: shows
446 - trakt_list:
447 <<: *trakt
448 list: series-queue
449 type: shows
450 if:
451 # if series name contains special characters
452 - trakt_series_name|asciify|strip_symbols != trakt_series_name:
453 set:
454 # set alternate_name with special chars removed
455 configure_series_alternate_name: "{{trakt_series_name|asciify|strip_symbols}}"
456 #FIXME doesn't work for discover, no search is emited for alternate_name
457 # worth a patch?
458 # Maybe that's a newznab search plugin functionality, I've patched it in there for now.
459 disable: seen
460 list_add:
461 - trakt_list:
462 <<: *trakt
463 list: series-queue
464 type: shows
465 - entry_list: trakt-series-queue
466
467 sync-series-begin: # {{{2
468 priority: 3
469 disable: seen
470 template:
471 - sync_series_trakt
472 configure_series:
473 from:
474 filesystem:
475 path:
476 - '/mnt/series'
477 retrieve: dirs
478 next_trakt_episodes:
479 <<: *trakt
480 list: collection
481 context: collected
482 accept_all: yes
483 set_series_begin: yes
484
485
486 sync-watchlist-movies: # {{{2
487 # get movies from trakt watchlist and adds them to flexget movie queue
488 priority: 1
489 list_clear:
490 what:
491 - movie_list: trakt-movies-queue
492 inputs:
493 - trakt_list:
494 <<: *trakt
495 list: watchlist
496 type: movies
497 - trakt_list:
498 <<: *trakt
499 list: movies-queue
500 type: movies
501 accept_all: yes
502 list_add:
503 - movie_list: trakt-movies-queue
504 - trakt_list:
505 <<: *trakt
506 list: movies-queue
507 type: movies
508 disable: [seen]
509
510
511 _sync-movies-collected-trakt: # {{{2
512 # this is expensive, don't run often
513 manual: yes
514 priority: 1
515 list_clear:
516 what:
517 - movie_list: movies-collected-trakt
518 trakt_list:
519 account: '{?trakt.account?}'
520 list: collection
521 type: movies
522 list_add:
523 - movie_list: movies-collected-trakt
524 accept_all: yes
525 disable: [seen]
526
527
528 move-series-usenet: # {{{2
529 manual: yes
530 template:
531 - move_series
532 filesystem:
533 path:
534 - /srv/usenet/done/series
535 recursive: yes
536 retrieve: files
537 regexp: '.*\.(avi|mkv|mp4|mpg|divx|webm|flv)$'
538
539
540 move-series-torrents: # {{{2
541 manual: yes
542 template:
543 - move_series
544 filesystem:
545 path:
546 - /srv/torrents/done
547 recursive: yes
548 retrieve: files
549 regexp: '.*\.(avi|mkv|mp4|mpg|divx|webm|flv)$'
550
551
552 move-movies-usenet: # {{{2
553 manual: yes
554 template:
555 - move_movies
556 - trakt_remove_movie_queue
557 filesystem:
558 path:
559 - /srv/usenet/done/movies
560 recursive: yes
561 regexp: '.*\.(mkv|avi|mp4)$'
562
563
564 move-movies-torrents: # {{{2
565 manual: yes
566 template:
567 - move_movies
568 - trakt_remove_movie_queue
569 filesystem:
570 path:
571 - /srv/torrents/done
572 recursive: yes
573 regexp: '.*\.(mkv|avi|mp4)$'
574
575
576 seed-series-db: # {{{2
577 manual: yes
578 seen: local
579 template:
580 - series_filesystem
581 configure_series:
582 from:
583 # entry_list: series-trakt
584 sonarr_list:
585 <<: *sonarr
586 only_monitored: yes
587 settings:
588 tracking: no
589 identified_by: ep
590 accept_all: yes
591
592
593 seed-series-trakt: # {{{2
594 # can also be used to learn and seed local db
595 # since adding to trakt doesn't work that is the only usage atm
596 manual: yes
597 seen: local
598 configure_series:
599 from:
600 filesystem:
601 path:
602 - '/mnt/series'
603 retrieve: dirs
604 template:
605 - series_filesystem
606 # currently doesn't work and times out, need to patch to send in batches
607 # - trakt_add_collection
608 accept_all: yes
609
610
611 seed-movies-trakt: # {{{2
612 # this will result in an error since the request is soo long
613 # but it seems that the data is still uploaded fully and updated
614 manual: yes
615 seen: local
616 template:
617 - movies_filesystem
618 - trakt_add_collection
619 accept_all: yes
620
621
622 trakt-copy-list: # {{{2
623 manual: yes
624 trakt_list:
625 <<: *trakt
626 list: series-queue
627 type: shows
628 accept_all: yes
629 list_add:
630 - trakt_list:
631 <<: *trakt
632 list: series-queue-backup
633 type: shows
634
635
636
637 schedules: # {{{1
638 - tasks: ['sync-watchlist-series*', 'dl-*']
639 interval:
640 hours: 1
641 jitter: 120 # seconds
642 - tasks: ['sync-watchlist-movies']
643 interval:
644 hours: 3 # needs to be 2h+ to avoid trakt_list cache
645 jitter: 120 # seconds
646
647 # vim: sts=2 ts=2 sw=2 et