momh

Télécharger ses séries avec Flexget

Cela fait quelques années que j’utilise Flexget — relativement basiquement — pour télécharger automatiquement les épisodes des séries que je suis mais ce n’est que depuis récemment que je suis parvenu à une configuration pleinement satisfaisante.

Flexget est un outil d’automation pour médias, notamment pour séries et animes, permettant entre autres de télécharger et d’organiser les épisodes...
Je ne prétends pas ici présenter l’outil dans ses moindre détails mais simplement présenter la configuration utilisée sur mon Raspberry Pi qui envoie les torrents à un daemon Transmission qui tourne sur mon NAS D-Link DNS-320 avec fun_plug (cf. cet article).

Pour l’installation, on choisit l’option « virtualenv » de la documentation

python3 -m venv ~/flexget/
cd ~/flexget/
bin/pip install flexget

Cependant, si vous souhaitez utiliser le plugin Transmission de Flexget, il vous faudra installer le paquet transmission-rpc :

bin/pip install transmission-rpc

sinon vos logs (dans ~/.config/flexget/flexget.log) vous afficheront des lignes de ce type :

2021-10-29 09:09:48 WARNING  task          feed-eztv       Aborting task (plugin: transmission)
2021-10-29 09:09:51 CRITICAL transmission  feed-rarbg      transmission-rpc module version 3.0 or higher required.

La configuration de FlexGet se fait dans le fichier ~/.config/flexget/config.yml et nécessite de prêter une attention toute particulière aux indentations...

Sans entrer dans le détail : on se connecte à une instance de Transmission, on définit les critères de téléchargement des torrents des séries que l’on suit (depuis le site TV Calendar) en rejetant les séries issues de certains networks et on envoie un mail pour annoncer les épisodes téléchargés.
Et ce pour deux flux RSS différents, chacun faisant l’objet d’une tâche que l’on lance automatiquement toutes les heures.

templates:
  tv:
    transmission:
      host: 192.168.X.XX
      port: 9091
      # username: username
      # password: password
    configure_series:
      settings:
        timeframe: 12 hours
        target: 1080p
        quality: 720p-1080p
        propers: 3 days
      from:
        pogcal:
          username: azerty@uiop.fr
          password: XXXXX
    thetvdb_lookup: yes
    if:
      - "tvdb_network and tvdb_network=='Netflix'": reject
      - "tvdb_network and tvdb_network=='Amazon'": reject
    notify:
      task:
        template: html  # Optional, if you want html instead of plain text
        via:
          - email:
              from: azerty@uiop.fr
              to:
                - azerty@uiop.fr
                - qwerty@uiop.com
              smtp_host: smpt.host.com
              smtp_port: 587
              smtp_username: azerty@uiop.fr
              smtp_password: "XXXXXX"
              smtp_tls: yes
              html: yes # To parse template as HTML

tasks:
  feed-eztv:
    priority: 1
    template: tv
    rss: https://eztv.re/ezrss.xml

  feed-rarbg:
    priority: 2
    template: tv
    rss: http://rarbg.to/rssdd.php?categories=2;18;41;49


schedules:
  - tasks: '*'
    interval:
      hours: 1

L’idée est donc de faire tourner FlexGet en mode daemon et de lui faire déclencher des tâches régulièrement (la section schedules en toute fin de fichier). Pour ce faire, on le lance ainsi :

~/flexget/bin/flexget --loglevel VERBOSE daemon start --autoreload-config -d

Pour que FlexGet se lance automatiquement à chaque démarrage, on crée une tâche Cron grâce à la commande crontab -e

@reboot /home/pi/flexget/bin/flexget --loglevel VERBOSE daemon start --autoreload-config -d