Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

[Résolu] Python3 et Encoding

Réservé à l'utilisation et la programmation de scripts dans JEEDOM
darkensen
Timide
Messages : 2
Inscription : 11 mars 2019, 14:55

[Résolu] Python3 et Encoding

Message par darkensen » 26 mai 2019, 18:03

Bonjour,

Je tente de faire un script autant inutile qu'indispensable :
Faire du TTS de Citation (Kaamelott) quand je rentre dans ma voiture.

Le Python Wikiquote fait le travail de récupération de la quote, jusqu'à la tout va bien, je code mon script python3.
Sauf que quand je le lance dans le plugin Jeedom Script, il n'accepte que du Python3.
J'ai contourné le problème en lançant un bash qui lance mon python3.
Sauf que, d'une, c'est chiant à gérer, d'autre part, j'ai un problème d'encodage dès qu'il y a des accents dans la phrase :
Erreur dans l'exécution du terminal, la valeur retournée est : 1. Détails : Traceback (most recent call last): File "/opt/scripts/Kaamelott-Quote.py", line 6, in print(random.choice(wikiquote.quotes(random.choice(wikiquote.search('Kaamelott',lang='fr')),lang='fr'))) UnicodeEncodeError: 'ascii' codec can't encode character '\xe7' in position 22: ordinal not in range(128)

J'ai essayé les lignes suivantes pour ces deux problèmes dans mon script, pas mieux :
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

Même avec un chmod +x sur le script

Je suis débutant en Jeedom et en script et j'ai beaucoup de mal avec le concept d'encodage..

Edit :
Après quelques recherche, la secodne ligne d'encoding est inutile car Python3 est par défaut en UTF-8
Mon seul problème est donc de lancer le script en python3 directement via le plugin :(

Edit 2 :
Bidouille : J'ai renommé mon fichier en Kaamelott.yolo et en laissant le env en début, je passe en Python3 !
MAIS, j'ai toujours un problème d'encodage :'(
Erreur dans l'exécution du terminal, la valeur retournée est : 1. Détails : Traceback (most recent call last): File "/opt/scripts/Kaamelott-Quote.yolo", line 5, in print(random.choice(wikiquote.quotes(random.choice(wikiquote.search('Kaamelott',lang='fr')),lang='fr'))) UnicodeEncodeError: 'ascii' codec can't encode character '\xea' in position 5: ordinal not in range(128)

Edit 3 :
J'ai changé de tactique, je lance un bloc php dans mon scénario : Nouveau bug : Le message arrive bien sur mon téléphone, uniquement, si le scénario est "Programmé" si je le lance manuellement ou sur un déclencheur, rien ...
HEELP :'(

Question générale, quand est-ce que Jeedom passe au full Python3 ? :)

Que puis-je faire ?

Cordialement.

***** Résolu *****

J'ai fini par avoir sa peau !
Voici mon script :

#!/usr/bin/env python3
# coding: utf8
import wikiquote
import random
#print("Test")
Quote = random.choice(wikiquote.quotes(random.choice(wikiquote.search('Kaamelott',lang='fr')),lang='fr'))
print(Quote.encode('ascii','xmlcharrefreplace'))

Et voici le "Bloc PHP"

$output=shell_exec('python3 Kaamelott-Quote.py 2>&1');
$output = ltrim($output, "b");
$scenario->setData('Quote', $output);

Avatar de l’utilisateur
PhilippeLc
Timide
Messages : 20
Inscription : 12 sept. 2018, 16:02
Contact :

Re: [Résolu] Python3 et Encoding

Message par PhilippeLc » 22 sept. 2019, 21:23

Bonjour,
je tente d’utiliser votre solution avec votre appel CODE BLOCK php mais cela ne fonctionne pas : les accents restent illisible pour GoogleCast :
Pourriez vous m'aider à comprendre ce problème d'encoding car j'ai le même problème pas ailleurs pour d'autres python3 ?
------------------------------------
[2019-09-22 21:18:39][SCENARIO] Start : Scenario lance manuellement.
[2019-09-22 21:18:39][SCENARIO] Exécution du sous-élément de type [action] : code
[2019-09-22 21:18:39][SCENARIO] Exécution d'un bloc code
[2019-09-22 21:18:41][SCENARIO] Exécution du sous-élément de type [action] : action
[2019-09-22 21:18:42][SCENARIO] Exécution de la commande [GoogleCast][Salon Google Home][Parle !] avec comme option(s) : {"background":"0","title":"","message":"cmd=tts|value=Quand il a ouvert le ventre du troll, j'ai reçu un jet d'acide qui m'a pratiquement acidifié!
"}
[2019-09-22 21:18:42][SCENARIO] Fin correcte du scénario
JEEDOM 3.x/RPI3 - OpenCV/RPI3 - GOOGLE HOME&CAST AUDIO & CAST VIDEO - MI BOX S - BROADLINK RM PRO - RFPLAYER- ZIGATE - BLUETOOTH local&antenne - ZWAVE SIGMA - pont IKEA et PHILIPS HUE
https://mypidrone.com

Répondre

Revenir vers « [Plugin officiel] Scripts »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 4 invités