Quoi de plus normal que de regarder des séries et films en VO ? Et si vos sous-titres étaient automatiquement téléchargés sur votre NAS tous les soirs ?
Regarder des séries et films en version originale, c’est ce que je passe mon temps à faire à recommander à mes élèves – et à leurs parents lors des réunions parents-professeurs.

On s’affranchit souvent de ces petits fichiers textes mais il peut arriver de tomber sur une série un peu plus coriace, qui demande de bien tout comprendre si on veut vraiment saisir le fin mot de l’histoire. Bref, parfois, les sous-titres, ça peut servir.
Voici donc un petit tutoriel pour récupérer automatiquement les bons sous-titres pour vos fichiers, avec en script en ligne de commande ou exécutable par votre NAS.
Synology : installation de pip
1. Ouvrez une session SSH sur le NAS et passez root :
ssh user@NAS
sudo -i
2. Installez pip
, le gestionnaire de paquets Python.
Synology : installation de subliminal
Subliminal est une librairie Python qui permet de rechercher et télécharger des sous-titres. C’est ce que nous allons lancer, soit en ligne de commande, soit par un cron sur le NAS.
Installez subliminal
:
pip install subliminal
Résultat, après quelques minutes:
Successfully built pysrt enzyme guessit babelfish dogpile.cache rarfile rebulk
Installing collected packages: pytz, chardet, pysrt, enzyme, rebulk, babelfish, python-dateutil, guessit, pbr, stevedore, futures, click, dogpile.cache, rarfile, beautifulsoup4, requests, subliminal
Successfully installed babelfish-0.5.5 beautifulsoup4-4.5.3 chardet-2.3.0 click-6.7 dogpile.cache-0.6.2 enzyme-0.4.1 futures-3.0.5 guessit-2.1.1 pbr-1.10.0 pysrt-1.1.1 python-dateutil-2.6.0 pytz-2016.10 rarfile-3.0 rebulk-0.8.2 requests-2.13.0 stevedore-1.20.0 subliminal-2.0.5
Script de téléchargement automatique des sous-titres
Passons maintenant au script de téléchargement automatique de nos sous-titres. Voici mes pré-requis :
- dossier à scanner : /volume1/video
- âge maximum des fichiers pour lesquels on recherche les sous-titres : 4 weeks
- langue des sous-titres: eng pour l’anglais, fra pour le français. Ici, je ne souhaite que de l’anglais.
Créez donc un nouveau fichier (dans votre dossier utilisateur du NAS, pas dans root
):
nano /volume1/homes/matt/subby.py
et ajoutez-y:
from datetime import timedelta
from babelfish import Language
from subliminal import download_best_subtitles, region, save_subtitles, scan_videos
# configure the cache
region.configure('dogpile.cache.dbm', arguments={'filename': 'cachefile.dbm'})
# scan for videos newer than 2 weeks and their existing subtitles in a folder
videos = scan_videos('/volume1/video', age=timedelta(weeks=10))
# download best subtitles in English
subtitles = download_best_subtitles(videos, {Language('eng')})
# save them to disk, next to the video
for v in videos:
save_subtitles(v, subtitles[v])
Vous pouvez lancer ce script directement depuis un terminal avec :
python /volume1/homes/matt/subby.py
Mise à jour : on peut encore mieux faire ! Lassé d’avoir à installer pip
et subliminal
à chaque mise à jour du DSM, j’ai écrit un script bash qui gère toute l’installation (pip, subliminal) et qui lance le script python pour le téléchargement des sous-titres.
On crée notre script bash :
nano /volume1/homes/matt/subby.sh
avec :
#!/bin/bash
# Script Name : Pip and Subliminal dependences FTW
# Script Author : Matt Biscay
# Script URL : https://www.skyminds.net/nas-synology-telecharger-automatiquement-sous-titres-subliminal/
# Script Version : 1.0 (2017-07)
# working dir
cd /volume1/homes/matt
# is pip installed ?
if which pip 2>/dev/null;
then
echo "pip is installed. Fetching subtitles..."
python subby.py
echo "Subs fetching complete. Enjoy !"
exit 1
else
echo "pip is missing. Installing it now..."
# remove pip install file
rm get-pip.py -f
# fetch pip install file
wget https://bootstrap.pypa.io/get-pip.py
# install pip
python get-pip.py
# install subliminal
pip install subliminal
# get subs
echo "pip and subliminal have been installed. Fetching subtitles..."
python subby.py
echo "Subs fetching complete. Enjoy !"
fi
Kaboom ! Si le binaire pip
n’est pas présent sur le système, c’est qu’il n’a pas survécu à la mise à jour du DSM. On l’installe donc, ainsi que subliminal
. Ensuite on lance le script de téléchargement.
Mise en place d’un cron pour automatiser le téléchargement des sous-titres
Si vous êtes sous Unix, vous pouvez mettre en place un cronjob avec le script tel quel.
Sur le Synology, tout se met en place en quelques clics :
- Rendez-vous dans Panneau de configuration > Planificateur de tâches > Créer > Tâche planifiée > Script défini par l’utilisateur:
Donnez un nom à votre tâche et assignez-lui un utilisateur (root).
- dans l’onglet Programmer, ajouter la fréquence de lancement du script :
- enfin, dans l’onglet Paramètres de tâches, donnez le chemin du script précédé de la commande
bash
puisque c’est un script bash:Ici, ce sera donc
bash /volume1/homes/matt/subby
.sh
A vous les sous-titres synchros tous les soirs !