Aujourd’hui, nouvelle étape dans l’automatisation de nos téléchargements : au lieu d’uploader un fichier .torrent ou magnet sous Transmission, nous allons installer FlexgGet qui va nous permettre de surveiller un flux RSS pour télécharger automatiquement les fichiers bittorrent.
Une fois le fichier graine téléchargé, Transmission se chargera de télécharger les fichiers immédiatement. Tout sera donc automatisé !
En prérequis, je vous conseille d’avoir Transmission installé et configuré sur votre serveur ou machine, cela vous fera gagner pas mal de temps.
Étape 1 : configuration de Transmission
Vous avez déjà Transmission qui tourne ? Parfait, on commence par arrêter le service :
service transmission-daemon stop
On crée un nouveau répertoire qui sera surveillé par Transmission – dès qu’un fichier .torrent sera ajouté dans ce répertoire, Transmission lancera le téléchargement :
mkdir /home/transmission/torrentwatch
On lui donne les bons droits et le bon utilisateur :
chown debian-transmission:debian-transmission /home/transmission/torrentwatch
chmod 777 /home/transmission/torrentwatch
Et on édite le fichier de configuration :
nano /etc/transmission-daemon/settings.json
Je me suis aperçu qu’il me manquait deux directives importantes dans ce fichier pour surveiller un répertoire donc on les ajoute à la suite des autres directives :
"watch-dir": "/home/transmission/torrentwatch",
"watch-dir-enabled": true,
Code language: JavaScript (javascript)
On sauvegarde le fichier et on redémarre Transmission :
service transmission-daemon start
Étape 2 : installation de Flexget
Flexget est un script Python donc il nous faut… python !
python3 -V
Cela nous retourne :
Python 3.12.3
Code language: CSS (css)
On installe pip
et pipx
qui permet d’installer des applications python dans des environnements:
apt install python3-pip pipx
On met à jour les setuptools
:
pipx install setuptools
On configure pipx
:
pipx ensurepath
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Code language: PHP (php)
On installe flexget
:
pipx install flexget
On crée le répertoire de configuration :
mkdir -p ~/.config/flexget
cd ~/.config/flexget
Code language: JavaScript (javascript)
On crée le fichier de configuration :
nano ~/.config/flexget/config.yml
Code language: JavaScript (javascript)
Qui contient :
templates:
# Paramètres globaux pour les séries
series_global:
download: /home/transmission/torrentwatch/
# Flux RSS à récupérer
inputs:
- rss: { url: 'https://example.com/feed.xml' } # RSS
# Vérifier si l'épisode n'est pas déjà présent
exists_series:
- '/home/transmission/completed'
- '/home/transmission/torrentwatch'
# These are the shows I regularly watch
series_suivies:
# La liste des séries à suivre est dans un autre fichier
include: [ series.yml ]
# Paramètres pour premiers épisodes de nouvelles séries
series_premieres:
thetvdb_lookup: yes
require_field: tvdb_genres
regexp:
reject:
- animation: {from: tvdb_genres}
- documentary: {from: tvdb_genres}
- talk show: {from: tvdb_genres}
- game show: {from: tvdb_genres}
- reality: {from: tvdb_genres}
- children: {from: tvdb_genres}
- food: {from: tvdb_genres}
- home and garden: {from: tvdb_genres}
series_premiere: yes
# Définition des tâches : flexget execute --task XX
tasks:
Series:
priority: 10
template:
- series_global
- series_suivies
Series_Premieres:
priority: 40
template:
- series_global
- series_premieres
# We use the manual plugin so that this task only runs when explicitly called
manual: yes
Code language: PHP (php)
Et le fichier de configuration des séries :
nano ~/.config/flexget/series.yml
Code language: JavaScript (javascript)
Qui contient :
series:
settings:
best:
upgrade: yes
quality: 720p hdtv+
target: 720p
timeframe: 6 hours
propers: 12 hours
normal:
quality: "hdtv <720p"
target: "<720p"
timeframe: 6 hours
propers: 12 hours
webrip:
quality: "webrip|webdl <720p "
target: "<720p"
timeframe: 6 hours
propers: 12 hours
# Les series pour lesquelles je souhaite avoir les versions en 720
best:
- Utopia
# Les autres series avec resolution plus basse
normal:
- Room 104
- Line Of Duty
- Ray Donovan
- Vikings
- Suits
- Orphan Black
- Game of Thrones
- The Walking Dead
# Pour les "web series"
webrip:
- House of Cards
Code language: PHP (php)
Sauvegardez puis lancez flexget
:
flexget execute
Résultat :
VERBOSE task_queue There are 2 tasks to execute. Shutdown will commence when they have completed.
VERBOSE details Series Produced 50 entries.
VERBOSE series Series identified by is currently on `auto` for Room 104. Multiple id types may be accepted until it locks in on the appropriate type.
VERBOSE task Series ACCEPTED: `Room 104 S01E03 HDTV x264-aAF` by series plugin because target quality
INFO download Series Downloading: Room 104 S01E03 HDTV x264-aAF
VERBOSE details Series Summary - Accepted: 1 (Rejected: 0 Undecided: 49 Failed: 0)
Code language: JavaScript (javascript)
Boom. Flexget a trouvé un fichier torrent dans le flux RSS qui correspond à une série que l’on suit, ce fichier est placé dans le répertoire surveillé par Transmission et le fichier vidéo est téléchargé automatiquement.
Étape 3 : supprimer les fichiers de Transmission une fois complétés
Pour supprimer les fichiers dans Transmission une fois qu’ils sont complétés, pour ne pas avoir une liste gigantesque sans fin, il suffit de créer un nouveau fichier bash :
nano /home/scripts/transmission-rm-completed.sh
Avec :
#!/bin/bash
# Script name : Transmission Remove Completed Torrents
# Script description : delete completed torrents in Transmission automatically
# Script URL: https://www.skyminds.net/telecharger-torrents-flexget-transmission/
# Author : Matt Biscay
# Author URL : https://mattbiscay.com/
SERVER="127.0.0.1:9091"
AUTH="--auth user:password"
/usr/bin/transmission-remote $SERVER $AUTH -l | grep 100%| awk '{print $1}' | xargs -n 1 -I % /usr/bin/transmission-remote $SERVER $AUTH -t % -r
Code language: PHP (php)
Vérifiez l’adresse et le port sur lesquels tourne Transmission (SERVER
) et vos identifiants (AUTH
).
On rend notre script exécutable :
chmod +x /home/scripts/transmission-rm-completed.sh
On arrête le service transmission-daemon
:
service transmission-daemon stop
Et on édite sa configuration :
nano /etc/transmission-daemon/settings.json
Pour y modifier les valeurs suivantes :
"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/home/scripts/transmission-rm-completed.sh",
Code language: JavaScript (javascript)
On sauvegarde et on redémarre le service :
service transmission-daemon start
Étape 4 : mise en place d’un crontab
Ultime étape, nous créons une tâche planifiée qui lancera Flexget toutes les deux heures :
crontab -e
Et on ajoute en fin de fichier :
0 */2 * * * /usr/local/bin/flexget execute
Code language: JavaScript (javascript)
Et voilà, vous venez d’automatiser vos téléchargements simplement et efficacement !
Vous avez un projet WordPress ou WooCommerce en tête? Transformez votre vision en réalité avec mon expertise reconnue.