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.
Un projet WordPress en tête ?
Vous avez une idée claire de ce que vous voulez, mais pas les ressources en interne pour le faire bien. Je développe des sites et extensions WordPress sur-mesure — sans délais à rallonge ni mauvaises surprises.
Décrivez-moi votre projet →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!
Vos mises à jour vous font peur ?
PHP 8.x qui casse un plugin, un thème qui n'est plus maintenu, une mise à jour de WooCommerce qui change tout — je gère les montées de version proprement, avec environnement de staging et rollback prévu.
Mettons votre stack à jour sans risque →
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 ?