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