[RESOLU] Problème d'encodage de texte

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Problème d'encodage de texte

Re: Problème d'encodage de texte

par Molinillo Rohan » 07 avr. 2023, 12:00

Je testerais ça (" à la place des '), en évitant d'utiliser le " dans les textes :
${key}="${d[key]}"
\:D/ \:D/ \:D/ Merci cela fonctionne parfaitement désormais :mrgreen:
Merci énormément à tous pour votre aide =D>

Re: Problème d'encodage de texte

par Saian » 07 avr. 2023, 11:10

Je testerais ça (" à la place des '), en évitant d'utiliser le " dans les textes :
${key}="${d[key]}"

Re: Problème d'encodage de texte

par Molinillo Rohan » 07 avr. 2023, 10:33

J'ai trouver la partie de code qui exécute le script php

Code : Tout sélectionner

function onVideoRequest(socket, d) { dev.log("GENERATING VIDEO WITH DATA : "); let generate = exec(`php ` + process.env.VIDEO_GENERATOR_SCRIPT + ` ${ Object.keys(d).map((key) => `${key}='${d[key]}'`).join(' ') }`, (err, stdout, stderr) => { if (err) { console.log(err); return; } if (stderr) { console.log(stderr); return; } }); generate.on('exit', () => { api.sendEventWithContent("videoGenerated", {}, io, socket); }); }

Re: Problème d'encodage de texte

par Saian » 06 avr. 2023, 13:22

J'avais raté cette erreur mais ça renvoie à ce problème d'apostrophe aussi (les arguments sont "cassés" après clip1_desc='C'est. Mon sentiment était que la ligne de commande était saisie dans le terminal mais peut être qu'en effet c'est un autre script qui génère la commande ?

En tout cas les paramètres de descriptif passeraient mieux comme je le suggérais plus tôt avec une saisie de la forme clip1_desc="C'est la première" tant qu'il n'y a pas de double quote dedans.

Re: Problème d'encodage de texte

par ynx » 06 avr. 2023, 13:14

Il y a surtout une erreur fatale avec str_replace puisque le paramètre clip2_desc n'est pas transmis correctement au script PHP lors de l'exécution.
PHP Warning: Undefined array key "clip2_desc" in /home/rohan/carnet-numerique/public/src/generate.php on line 22
PHP Fatal error: Uncaught TypeError: str_replace(): Argument #3 ($subject) must be of type array|string, null given in /home/rohan/carnet-numerique/public/src/generate.php:23

Du coup le problème ne viendrait pas du fichier generate.php mais du script qui exécute ce fichier.

Re: Problème d'encodage de texte

par Saian » 06 avr. 2023, 13:06

Mon impression pourtant est que la ligne 6 en erreur serait celle ci :
$carry[$tokens[0]] = $tokens[1];
Ce serait donc $tokens[1] qui n'existe pas car $argv contient des chaines n'ayant pas de = à cause de ces apostrophes mal échappées.
Mais bon y aurait peut être plus que 2 warnings dans ce cas...?

Re: Problème d'encodage de texte

par ynx » 06 avr. 2023, 12:59

Pas convaincu que le problème vienne de ce script php.
Quel est le processus qui exécute la commande php ./public/src/generate.php ? Tu as un autre script/app qui lance la génération des vidéos ?

Re: Problème d'encodage de texte

par Molinillo Rohan » 06 avr. 2023, 11:33

@two3d
Voilà, après modification, voici l'erreur que ça me retourne.

Code : Tout sélectionner

{ Error: Command failed: php ./public/src/generate.php projectPath='/home/rohan/Documents/dodoc2/_projects/test-2' musicPath='/_musics/canals.mp3' clip1_name='' clip2_name='' clip3_name='' clip4_name='' clip5_name='' clip1_desc='C'est la première' clip2_desc='C'est la deuxième' clip3_desc='C'est la troisième' clip4_desc='C'est l'avant dernière' clip5_desc='C'est la dernière' project_desc='' workshop_type='Atelier Robotique' title='Test 2' participants='Molinillo Rohan ' PHP Warning: Undefined array key 1 in /home/rohan/carnet-numerique/public/src/generate.php on line 6 PHP Warning: Undefined array key 1 in /home/rohan/carnet-numerique/public/src/generate.php on line 6 ffmpeg version 5.1.1-1ubuntu2.1 Copyright (c) 2000-2022 the FFmpeg developers built with gcc 12 (Ubuntu 12.2.0-3ubuntu1) configuration: --prefix=/usr --extra-version=1ubuntu2.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librist --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --disable-sndio --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-libplacebo --enable-shared libavutil 57. 28.100 / 57. 28.100 libavcodec 59. 37.100 / 59. 37.100 libavformat 59. 27.100 / 59. 27.100 libavdevice 59. 7.100 / 59. 7.100 libavfilter 8. 44.100 / 8. 44.100 libswscale 6. 7.100 / 6. 7.100 libswresample 4. 7.100 / 4. 7.100 libpostproc 56. 6.100 / 56. 6.100 Input #0, matroska,webm, from '/home/rohan/Documents/dodoc2/_projects/test-2/video-20230406-112907-sxn.webm': Metadata: encoder : QTmuxingAppLibWebM-0.0.1 Duration: N/A, start: -0.001000, bitrate: N/A Stream #0:0(eng): Video: vp8, yuv420p(progressive), 1280x720, SAR 1:1 DAR 16:9, 10 tbr, 1k tbn (default) Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default) Stream mapping: Stream #0:0 -> #0:0 (vp8 (native) -> vp9 (libvpx-vp9)) Stream #0:1 -> #0:1 (opus (native) -> opus (libopus)) Press [q] to stop, [?] for help [libvpx-vp9 @ 0x555b9789cdc0] v1.12.0 Output #0, webm, to 'clip1.webm': Metadata: encoder : Lavf59.27.100 Stream #0:0(eng): Video: vp9, yuv420p(tv, bt470bg/unknown/unknown, progressive), 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 3000 kb/s, 10 fps, 1k tbn (default) Metadata: encoder : Lavc59.37.100 libvpx-vp9 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, flt, 192 kb/s (default) Metadata: encoder : Lavc59.37.100 libopus frame= 93 fps=9.9 q=2.0 Lsize= 2051kB time=00:00:09.24 bitrate=1818.4kbits/s speed=0.981x video:1798kB audio:249kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.222542% PHP Warning: Undefined array key "clip2_desc" in /home/rohan/carnet-numerique/public/src/generate.php on line 22 PHP Fatal error: Uncaught TypeError: str_replace(): Argument #3 ($subject) must be of type array|string, null given in /home/rohan/carnet-numerique/public/src/generate.php:23 Stack trace: #0 /home/rohan/carnet-numerique/public/src/generate.php(23): str_replace() #1 {main} thrown in /home/rohan/carnet-numerique/public/src/generate.php on line 23 at ChildProcess.exithandler (child_process.js:275:12) at emitTwo (events.js:126:13) at ChildProcess.emit (events.js:214:7) at maybeClose (internal/child_process.js:925:16) at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5) killed: false, code: 255, signal: null, cmd: 'php ./public/src/generate.php projectPath=\'/home/rohan/Documents/dodoc2/_projects/test-2\' musicPath=\'/_musics/canals.mp3\' clip1_name=\'\' clip2_name=\'\' clip3_name=\'\' clip4_name=\'\' clip5_name=\'\' clip1_desc=\'C\'est la première\' clip2_desc=\'C\'est la deuxième\' clip3_desc=\'C\'est la troisième\' clip4_desc=\'C\'est l\'avant dernière\' clip5_desc=\'C\'est la dernière\' project_desc=\'\' workshop_type=\'Atelier Robotique\' title=\'Test 2\' participants=\'Molinillo Rohan\n\'' }

Re: Problème d'encodage de texte

par @rthur » 04 avr. 2023, 19:45

Même si je fais en sorte que les apostrophes soit écrite en échapper dans mon fichier TXT, le script PHP ne le prend pas en compte et les sous-titres afficher sur la vidéo sont toujours cassé. :?
Fais déjà marcher ton appel FFMPEG sans passer par PHP.
Une fois que ça marchera sur un exemple, tu le rendras dynamique avec PHP

Re: Problème d'encodage de texte

par two3d » 04 avr. 2023, 19:45

OK, ce qui est bizarre c'est que les apostrophes ne sembles pas être remplacées, on peut le voir dans l'erreur :

Error: Command failed: php ./public/src/generate.php projectPath='/home/rohan/Documents/dodoc2/_projects/nouveau-test' musicPath='/_musics/classic.mp3' clip1_name='' clip2_name='' clip3_name='' clip4_name='' clip5_name='' clip1_desc='C'est un nouveau test ' clip2_desc='C'est le deuxième test' clip3_desc='C'est le troisième te...

Faire un test pour être sur qu'il remplace bien ce qu'on veut, faire ceci :
$clipDescription = $parameters["clip${i}_desc"];
// Use str_replace() function to replace ' with ’
$clipDescription = str_replace("est", "ok", $clipDescription);
Si l'erreur marque :

Error: Command failed: php ./public/src/generate.php projectPath='/home/rohan/Documents/dodoc2/_projects/nouveau-test' musicPath='/_musics/classic.mp3' clip1_name='' clip2_name='' clip3_name='' clip4_name='' clip5_name='' clip1_desc='C'ok un nouveau test ' clip2_desc...

Il remplace bien, sinon on verra d'autres pistes.

Re: Problème d'encodage de texte

par Saian » 04 avr. 2023, 17:13

@two3d, le fichier descriptif est remplit avec la donnée provenant de la commande.
$parameters = array_reduce($argv, function($carry, $arg) {
    $tokens = explode('=', $arg);
    $carry[$tokens[0]] = $tokens[1];
    return $carry;
}, []);
//...
file_put_contents("$projectPath/clip${i}_desc.txt", $parameters["clip${i}_desc"]);

Re: Problème d'encodage de texte

par two3d » 04 avr. 2023, 17:07

Tu as bien un formulaire pour taper les subtitles de tes vidéos ?

=> Dans cette fameuse page où tu renseigne tes subtitles => avant d'insérer dans dans le txt, tu passe ton texte avec la fonction str_replace.

Tu n'aura pas besoin de les échapper dans ce code là. D'ailleurs ce que tu tente dans ce code n'a aucun effet car la commande prend ce qui est DANS le txt.

Re: Problème d'encodage de texte

par Saian » 04 avr. 2023, 16:54

Il ne faut pas échapper les ' qui encadre la chaine, seulement les ' à l'intérieur de la chaine et uniquement parce que tu utilises le même caractère.
clip1_desc='C\'est un nouveau test'
Ceci devrait fonctionner :
clip1_desc="C'est un nouveau test"

Re: Problème d'encodage de texte

par Molinillo Rohan » 04 avr. 2023, 16:36

Il faut que tu échappes tes apostrophes, donc les remplacer par \'
Même si je fais en sorte que les apostrophes soit écrite en échapper dans mon fichier TXT, le script PHP ne le prend pas en compte et les sous-titres afficher sur la vidéo sont toujours cassé. :?

Re: Problème d'encodage de texte

par @rthur » 04 avr. 2023, 16:11

Il faut que tu échappes tes apostrophes, donc les remplacer par \'