RunProgram et ezstream

Codes specifiques à Linux
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

RunProgram et ezstream

Message par hub73 »

Bonjour.
J'y travaille depuis de longues heures et je ne comprends pas pourquoi cela ne fonctionne pas !

Sur l'ordinateur sous ubuntu 20.04 j'ai installé ezstream afin d'envoyer un fichier .ogg à mon serveur icecast2 en VPS chez OVH.

Depuis un terminal en ligne de commande, pas de soucis je parviens à réaliser la commande.

J'ai voulu automatiser l'opération depuis mon programme de diffusion et je tourne en boucle.

Code : Tout sélectionner

Procedure Generer_fichier_ice2(Fichier$)
 
 
  Define Donnees$
  Define FichierTempo$
  
  Donnees$ = ""
               
  Donnees$ = Donnees$ + "<?xml version='1.0' encoding='UTF-8'?>"
  Donnees$ = Donnees$ + "<!-- Ezstream configuration root element -->"
  Donnees$ = Donnees$ + "<ezstream>"
  Donnees$ = Donnees$ + "  <servers>"
  Donnees$ = Donnees$ + "    <server>"
  Donnees$ = Donnees$ + "      <!-- Identifying name; default: 'Default' -->"
  Donnees$ = Donnees$ + "      <name>Default</name>"
  Donnees$ = Donnees$ + "      <protocol>HTTP</protocol>"
  Donnees$ = Donnees$ + "      <hostname>146.59.233.129</hostname>"
  Donnees$ = Donnees$ + "     <port>8000</port>"
  Donnees$ = Donnees$ + "      <user>source</user>"
  Donnees$ = Donnees$ + "      <password>******</password>" ; mot de passe bon, je cache sur le forum
  Donnees$ = Donnees$ + "      <reconnect_attempts>0</reconnect_attempts>"
  Donnees$ = Donnees$ + "      <tls>none</tls>"
  Donnees$ = Donnees$ + "    </server>"
  Donnees$ = Donnees$ + "  </servers>"
  Donnees$ = Donnees$ + "  <streams>"
  Donnees$ = Donnees$ + "    <stream>"
  Donnees$ = Donnees$ + "      <name>Default</name>"
  Donnees$ = Donnees$ + "      <mountpoint>/floralies.ogg</mountpoint>"
  Donnees$ = Donnees$ + "      <intake>Default</intake>"
  Donnees$ = Donnees$ + "      <server>Default</server>"
  Donnees$ = Donnees$ + "      <public>No</public>"
  Donnees$ = Donnees$ + "      <format>Ogg</format>"
  Donnees$ = Donnees$ + "      <stream_name>floralies.ogg</stream_name>"
  Donnees$ = Donnees$ + "     <stream_url>http://146.59.233.129:8000/</stream_url>"
  Donnees$ = Donnees$ + "      <stream_genre>WebRadio</stream_genre>"
  Donnees$ = Donnees$ + "      <stream_description>Radio Les Floralies</stream_description>"
  Donnees$ = Donnees$ + "      <stream_quality>1.5</stream_quality>"
  Donnees$ = Donnees$ + "      <stream_bitrate>16</stream_bitrate>"
  Donnees$ = Donnees$ + "      <stream_samplerate>44100</stream_samplerate>"
  Donnees$ = Donnees$ + "      <stream_channels>2</stream_channels>"
  Donnees$ = Donnees$ + "    </stream>"
  Donnees$ = Donnees$ + "  </streams>"
  Donnees$ = Donnees$ + "  <intakes>"
  Donnees$ = Donnees$ + "    <intake>"
  Donnees$ = Donnees$ + "      <name>Default</name>"
  Donnees$ = Donnees$ + "      <type>file</type>"
  Donnees$ = Donnees$ + "      <filename>" + Fichier$ + "</filename>"
  Donnees$ = Donnees$ + "      <!-- Setting whether To stream intake indefinitely Or only once -->"
  Donnees$ = Donnees$ + "     <stream_once>Yes</stream_once>"
  Donnees$ = Donnees$ + "    </intake>"
  Donnees$ = Donnees$ + "  </intakes>"
  Donnees$ = Donnees$ + "  <metaDonnees>"
  Donnees$ = Donnees$ + "    <format_str>@a@ - @t@</format_str>"
  Donnees$ = Donnees$ + "    <refresh_interval>-1</refresh_interval>"
  Donnees$ = Donnees$ + "    <normalize_strings>Yes</normalize_strings>"
  Donnees$ = Donnees$ + "    <no_updates>No</no_updates>"
  Donnees$ = Donnees$ + "  </metaDonnees>"
  Donnees$ = Donnees$ + "</ezstream>"     
  
  FichierTempo$= GetPathPart(ProgramFilename()) + "tempoice.xml"
  
  Debug FichierTempo$
  
  DeleteFile (FichierTempo$, #PB_FileSystem_Force)
  If OpenFile(0, FichierTempo$)  
    Debug "Ok"
    Debug Fichier$
    WriteString(0, Donnees$, #PB_UTF8 )
  EndIf
  
  Define Programme
  Define Output$
  
  Define Commande$
  Define Parametres$
  
  Commande$ = "bash"
  Parametres$ = "programme.sh " +  FichierTempo$     ;FichierTempo$
  
  ;MessageRequester("Output", Commande$ + Parametres$)  
  
  SetCurrentDirectory(GetPathPart(ProgramFilename()))
  Delay (1000)
  
  Programme = RunProgram (Commande$,Parametres$, "", #PB_Program_Open | #PB_Program_Read | #PB_Program_UTF8)

  ;While ProgramRunning(Programme)
   ; If AvailableProgramOutput(Programme)
   ;   Output$ + ReadProgramString(Programme) + Chr(13)
   ; EndIf
  ;Wend
  
  ;Output$ + Chr(13) + Chr(13)
  ;Output$ + "Exitcode: " + Str(ProgramExitCode(Programme))
  
  ;CloseProgram(Programme) ; Close the connection to the program
  
  ;MessageRequester("Output", Output$)  
 
EndProcedure
et le contenu de programme.sh (qui est modifié pour être en exécution).

Code : Tout sélectionner

#!/bin/bash
#
# Test de fichier bash hubert
#
export PATH=$PATH:$HOME/bin
export PATH=$PATH:$USER/Documents/radio_programmation_purebasic
echo $PATH
$USER/Documents/radio_programmation_purebasic/ezstream -c $1
echo "ezstream -c $1" > titi.txt
Et bien le fichier titi est généré dans le dossier /Documents/radio_programmation_purebasic/ ou se trouve mon programme exécutable. Par contre il ne veut pas réaliser le ezstream -c $1!
si j'ouvre le fichier titi.txt, je copie la ligne de son contenu. J'ouvre un terminal et je colle la commande il l'éxécute sans problème !

D'ou ma question : Mais pourquoi il ne veut pas la faire cette commande dans le fichier programme.sh ??? Alors qu'en direct depuis le terminal çà marche ! Quelle carabistouille linux empeche cette réalisation ? Quels conseils ou idées avez vous pour me débloquer !

Note si je mets 'ezstream -c $1' en direct dans le fichier programme.sh ca fait rien non plus. Je me suis dis que c'était une question de path alors j'ai rajouté !

Au début j'exécutais directement la commande "ezstream -c Monfichier.xml" depuis le runprogram mais choux blanc. D'ou le fichier programme.sh

Merci de votre aide. La je suis perdu !
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: RunProgram et ezstream

Message par hub73 »

Bon j'ai finalement laissé tombé ! C'était mieux avec xterm pour tester :

Code : Tout sélectionner

#!/bin/bash
#
# Test de fichier bash hubert
#
export PATH=$PATH:$HOME/bin
export PATH=$PATH:$USER/Documents/radio_programmation_purebasic
xterm -hold -e "ezstream -c $1" &
ezstream -c $1 &
Répondre