Jump to content
Sign in to follow this  
tomboul

tuto : exécuter une commande sur un container ubuntu à partir de votre serveur web, exemple avec AENEAS

Recommended Posts

Après de nombreuses recherches, je partage ici mon expérience

Mon problème est que je voulais installer AENEAS sur mon QNAP pour l'utiliser sur mon site internet pour synchroniser des sous-titres avec une vidéo youtube.

et le problème est que AENEAS n'est pas compatible avec l'environnement du QNAP TS-231 (linux QTS), il est compatible sur debian, unbuntu, avec python2 ou 3.5 (maxi), il nécessite l'installation de espeak, lui aussi incompatible avec QTS

La seule façon de l'installer est l'utilisation d'un container avec soit debian, soit ubuntu, j'ai choisi ubuntu. voir tuto installation d'un container là
Lorsque vous ajoutez un container, penser à déclarer un volume  partagé avec le host -> advanced setting -> shared folder -> volume from host : indiquer le répertoire de votre qnap qui contiendra les donnée d'un répertoire de votre container.
Ainsi votre serveur Web aura un accès direct aux données de voter container.

J'ai réussi à installer AENEAS dans ce container avec ubuntu docker et il est identifié ainsi ubuntu-1
j'ai d'abord installé avec la commande apt-get install les modules gcc de compilations, les commandes linux nécessaires (apt vous signale toutes les commandes manquantes comme sudo etc ...), et tous les modules dépendants d'AENEAS à savoir : ffmpeg, ffprobe, espeak, puiis python2.7, pip, numpy, our isntaller aeneas plus rapidement j'ai utilisé dependancies.sh , ensuite on peut faire : pip install aeneas
on peut trouver le tuto d'installation d'AENEAS et le fichier des dépendances sur ce site

Mais je ne savais pas comment exécuter ce module vis une commande exec dans un fichier php du serveur web accessible par internet :
Aeneas est un module qui permet de synchroniser des sous-titres avec une vidéo youtube
La commande que j'ai dans mon fichier php est la suivante :

    exec('python -m aeneas.tools.execute_task ' . $url . ' data/' . $id . '_script.txt "task_language=fr|is_text_type=plain|os_task_file_format=srt" data/' . $id . '_script.srt -y');
 

$url contenant un lien vers la vidéo youtube et le fichier str qui recevra le résultat est identifié par $id (id de la vidéo youtube)

Le problème est que  mon serveur web est installé sur le QNAP et donc la commande python sera introuvable car elle est sur le container.

Pour cela il faut utiliser la commande docker exec,

[~] # docker exec --help

Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Run a command in a running container

Options:
  -d, --detach               Detached mode: run command in the background
      --detach-keys string   Override the key sequence for detaching a container
  -e, --env list             Set environment variables
      --help                 Print usage
  -i, --interactive          Keep STDIN open even if not attached
      --privileged           Give extended privileges to the command
  -t, --tty                  Allocate a pseudo-TTY
  -u, --user string          Username or UID (format: <name|uid>[:<group|gid>])

 

mon container est ubuntu-1 ,  à partir de l'environnement de base du QNAP, sur SSH putty,  pour tester si  AENEAS est accessible et bien installé, il faut procéder ainsi :

docker exec -t ubuntu-1  python -m aeneas.diagnostics

résultat de la commande sur stdout :

[INFO] ffprobe        OK
[INFO] ffmpeg         OK
[INFO] espeak         OK
[INFO] aeneas.tools   OK
[INFO]   If you plan to use aeneas on the command line,
[INFO]   you might want to 'export PYTHONIOENCODING=UTF-8' in your shell
[INFO] aeneas.cdtw    AVAILABLE
[INFO] aeneas.cmfcc   AVAILABLE
[INFO] aeneas.cew     AVAILABLE
[INFO] All required dependencies are met and all available Python C extensions are working

 

ça m'indique bien que la commande python -m aeneas fonctionne et est accessible par l'environnemetn de base de QNAP-e PYTHONIOENCODING=UTF-8 pour indiquer UTF-8 comme encodage par défaut)

dans mon fichier PHP je dois modifier l'exec ainsi :

 

    exec('docker exec -i -e PYTHONIOENCODING=UTF-8 unbuntu-1 python -m aeneas.tools.execute_task ' . $url . ' data/' . $id . '_script.txt "task_language=fr|is_text_type=plain|os_task_file_format=srt" data/' . $id . '_script.srt -y');

Share this post


Link to post
Share on other sites
Sign in to follow this  

×