Dernièrement, le script python que j’ai écrit pour télécharger les sous-titres automatiquement avec Subliminal a renvoyé le message d’erreur suivant :
AttributeError: 'list' object has no attribute 'lower'
Code language: JavaScript (javascript)
Il se trouve que l’attribut lower ne peut-être appliqué qu’à des variables (type string
) et non pour des objets (type array
).
Nous allons donc éditer le code source de subliminal pour corriger le problème.
Ajout de nouvelles directives à subtitle.py
1. On se connecte au Synology en SSH:
ssh admin@SYNOLOGY
Code language: CSS (css)
2. On passe root
:
sudo -i
3. On recherche le fichier subtitle.py
:
find / -type f -name "subtitle.py"
Code language: JavaScript (javascript)
Résultat, 3 fichiers trouvés sur le NAS:
/usr/lib/python2.7/site-packages/subliminal/subtitle.py
/volume1/@appstore/VideoStation/subtitle_plugins/syno_subscene/subtitle.py
/volume1/@appstore/subliminal/env/lib/python2.7/site-packages/subliminal/subtitle.py
4. Le fichier qui nous intéresse se trouve sous /usr/lib
donc nous l’éditons:
nano /usr/lib/python2.7/site-packages/subliminal/subtitle.py
5. Faites une recherche avec le terme lower
(avec Ctrl+W sous nano
). Vous trouver cette ligne:
# format
if video.format and 'format' in guess and guess['format'].lower() == video.format.lower():
matches.add('format')
Code language: PHP (php)
Nous allons commenter ces lignes et ajouter des conditions pour que lower ne soit appliqué qu’aux chaînes (type string):
# format
#if video.format and 'format' in guess and guess['format'].lower() == video.format.lower():
#matches.add('format')
if video.format and 'format' in guess:
guess_format = guess['format'] if isinstance(guess['format'], list) else [guess['format']]
if any(gf.lower() == video.format.lower() for gf in guess_format):
matches.add('format')
Code language: PHP (php)
6. Sauvegardez le fichier.
7. Relancez la recherche automatique des sous-titres : plus d’erreurs relatives à l’attribut lower
:)
Enjoy!
Rencontrez-vous des défis avec votre site WordPress ou WooCommerce? Laissez-moi les résoudre pour vous.
Nickel cette astuce. Ca a résolu mon problème, même sous Ubuntu 18.04.
Par contre, j’ai utilisé locate car find me remontait des trucs bizarres et le fichier en question se trouvait dans /usr/local/lib
Merci beaucoup Matt.
Et bonne rentrée.
Je t’en prie Agat’ :)
Oui, de temps en temps
find
fait des siennes, cela dépend des OS. J’utilise plus souventlocate
sous Ubuntu.Merci pour la rentrée, c’est reparti !
Et toi ?