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@SYNOLOGYCode 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)
Attention à bien respecter le nombre d’espaces pour l’indentation : il s’agit d’un script python donc très tatillon à ce sujet !
6. Sauvegardez le fichier.
7. Relancez la recherche automatique des sous-titres : plus d’erreurs relatives à l’attribut lower :)
Enjoy!
Des obstacles techniques ? Je trouve des solutions sur-mesure pour que votre site WordPress/WooCommerce fonctionne sans accroc.
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
findfait des siennes, cela dépend des OS. J’utilise plus souventlocatesous Ubuntu.Merci pour la rentrée, c’est reparti !
Et toi ?