Icecast Streaming Media Server Forum Index Icecast Streaming Media Server
Icecast is a Xiph Foundation Project
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Affichage des titres sur une page internet ...

 
Post new topic   Reply to topic    Icecast Streaming Media Server Forum Index -> Forum Francophone
View previous topic :: View next topic  
Author Message
theesound
Guest





PostPosted: Sat Feb 18, 2006 10:22 am    Post subject: Affichage des titres sur une page internet ... Reply with quote

Bonjour et meci pour ce forum en français sur Icecast, lol.voilà, nous venons de lancer une webradio diffusant que des artistes sous licence linres, nous travaillons sur la grille des programme et sur une page spéciale pour la radio, ma question est ,peut on afficher en temps réel ce qui passe sur la radio ? un script php etc...Nous diffusons via foobar+oddcast, merci pour votre réponse Wink
Back to top
Anonymous
Guest





PostPosted: Wed Mar 08, 2006 8:19 pm    Post subject: Reply with quote

récupère le XML de icecast

++
Back to top
Anonymous
Guest





PostPosted: Sat Apr 01, 2006 10:54 am    Post subject: Re: Affichage des titres sur une page internet ... Reply with quote

theesound wrote:
Bonjour et meci pour ce forum en français sur Icecast, lol.voilà, nous venons de lancer une webradio diffusant que des artistes sous licence linres, nous travaillons sur la grille des programme et sur une page spéciale pour la radio, ma question est ,peut on afficher en temps réel ce qui passe sur la radio ? un script php etc...Nous diffusons via foobar+oddcast, merci pour votre réponse Wink


oui biensûr, c'est tout à fait possible, et peut être as tu déjà trouvé la solution depuis le post que tu as fait. Smile

Cependant j'ai remarqué une chose : plus les streams tournent dans le temps plus l'affichage du son qui passe sur ta radio est en avance sur le programme réel. De plus je n'ai rien vu qui me permettait de reactuliser l'affichage icecast sans que le client le demande.

Si vous avez des solutions à ces deuxproblème, ça me ferait bien plaisir !
Back to top
Anonymous
Guest





PostPosted: Wed Jun 06, 2007 10:44 am    Post subject: Reply with quote

pour la seconde situation le web2.0 repond a la problematique !

pour la premiere, il y a une methode a laquelle je viens de penser, mais assez "bourrine". Elle consiste a maintenir a jour l'heure de debut theorique de chaque titre, en incrementant a chaque fois l'ancienne heure de la duree reelle du titre. C'est assez lourd quand meme...
Back to top
Anonymous
Guest





PostPosted: Wed Jul 11, 2007 9:20 am    Post subject: Affichage des titres sur page web HTML Reply with quote

Bonjour,
Je suis débutant, mon site internet a été dévelloppé avec un programme qui fait tout et qui n'est pas terrible, mais au moins je le comprend. Ma question est la suivante, j'aimerais indiqué le titre des chansons qui sont diffusé sur ma webradio. J'ai essayé de reprendre le code XML de icecast, mais avec mon programme de création ce ne fonctionne pas ! Pourriez vous m'aiguiller comment procédé ?

Merci d'avance
Back to top
Anonymous
Guest





PostPosted: Mon Sep 03, 2007 8:51 am    Post subject: script PHP Reply with quote

Une bonne ame pourrai m'aider en me donnant un script PHP qui permette de récupérer les données de XML de Icecast pour affiché sur ma page web uniquement le titre et le nom du morceau diffusé par le flux. Merci d'avance !
Back to top
jcr
Modérateur français
Modérateur français


Joined: 14 Apr 2006
Posts: 544
Location: France, Auvergne

PostPosted: Mon Oct 01, 2007 7:45 pm    Post subject: Reply with quote

Des méthode sont été discutées sur ce post http://icecast.imux.net/viewtopic.php?t=2847
Le sctpt PHP donné fonctionne sous MamboServer/Joomla/Enfin et autres CMS compatibles
_________________
Epsilon Friends Radio Icecast Radio on CentovaCast admin panel. Icecast hosting
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
Anonymous
Guest





PostPosted: Wed Jan 02, 2008 2:29 pm    Post subject: Mais il est où le xml de icecast Reply with quote

Bouhouhouuu, je cherche, je cherche, et je me sens de plus en plus con...

Moi aussi je veux afficher les infos du genre, artiste, title, ..., mais je ne sais pas où se trouve ce fameux xml qui contient ces infos.
Back to top
jcr
Modérateur français
Modérateur français


Joined: 14 Apr 2006
Posts: 544
Location: France, Auvergne

PostPosted: Wed Jan 02, 2008 4:00 pm    Post subject: Reply with quote

par une lecture de http://tonsiteice.net:leport/status.xsl par exemple...

En PHP, une lecture d ela page avec Curl ou l'extension http, puis parsing du code retourné...

Le post cité contient un exemple de xsl personnalisé pour retourner le live et le robot d'un site...
_________________
Epsilon Friends Radio Icecast Radio on CentovaCast admin panel. Icecast hosting
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
Anonymous
Guest





PostPosted: Wed Jan 02, 2008 5:06 pm    Post subject: Reply with quote

Ahhh, ok, ce qui veut donc dire qu'un player comme itunes ou winamp "savent", à partir du moment où c'est un flux icecast (et cette info est dans le heder du flux), qu'il existe un fichier status.xsl, et c'est ce fichier que ces clients appellent ?

Ca veut donc dire que si je remanie status.xsl à "ma sauce", les clients winamp&cie ne pourront surement plus lire correctement les infos, puisque sa structure aura changé?

Mais il n'y a pas moyen d'appeler directement le fichier xml avec les infos, c'est un peut plus propre que de faire un parsing du code html généré, nan ?

Bref, la meilleure solution semble de faire un my_status.xsl ou je formatte tout comme je le souhaite, vous me confirmez ? Car on m'a également parlé d'une info à faire passer dans le header de la requête http pour demander que les metadata soient envoyés dans le header de la réponse. Quid?

Autre chose, si je prends la solution du parsing de my_status.xsl. Quand je regarde la source de status2.xsl (plus léger), j'ai ceci:

Code:
<xsl:for-each select="source">
<xsl:value-of select="@mount" />,,<xsl:value-of select="name" />,<xsl:value-of select="listeners" />,<xsl:value-of select="description" />,<xsl:value-of select="artist" /> - <xsl:value-of select="title" />,<xsl:value-of select="url" />
</xsl:for-each>


Or le développeur responsable du serveur me dit qu'il génére cet xml:
Code:
PRINT "<PREVIOUS>"
PRINT "<TITLE>Nothing's gonna change your mind (Radio Edit) </TITLE>"
PRINT "<INTERPRET>Baldy Drawn Boy </INTERPRET>"
PRINT "<ALBUM> </ALBUM>"
PRINT "<LABEL>EMI Records </LABEL>"
PRINT "<YEAR>2006</YEAR>"
PRINT "<LENGTH>05:22</LENGTH>"
PRINT "<ISRC>h27216_01</ISRC>"
PRINT "<COVER>http://sasinternet.moodmedia.fr/demo_traXX/COVERS/27216.jpg </COVER>"
PRINT "</PREVIOUS>"
PRINT "<CURRENT>"
PRINT "<TITLE>Irreplaceable (Radio edit) </TITLE>"
PRINT "<INTERPRET>Beyoncé </INTERPRET>"
PRINT "<ALBUM> </ALBUM>"
PRINT "<LABEL>Sony BMG </LABEL>"
PRINT "<YEAR>2006</YEAR>"
PRINT "<LENGTH>03:48</LENGTH>"
PRINT "<ISRC>h27266_01</ISRC>"
PRINT "<COVER>http://sasinternet.moodmedia.fr/demo_traXX/COVERS/27266.jpg </COVER>"
PRINT "</CURRENT>"
PRINT "<NEXT>"
PRINT "<TITLE>Long way 2 go (Radio edit) </TITLE>"
PRINT "<INTERPRET>Cassie </INTERPRET>"
PRINT "<ALBUM> </ALBUM>"
PRINT "<LABEL>Bad boy records </LABEL>"
PRINT "<YEAR>2006</YEAR>"
PRINT "<LENGTH>03:40</LENGTH>"
PRINT "<ISRC>h27267_01</ISRC>"
PRINT "<COVER>http://sasinternet.moodmedia.fr/demo_traXX/COVERS/27267.jpg </COVER>"
PRINT "</NEXT>"


Et quand je visualise status2.xsl, seul <xsl:value-of select="title" /> affiche quelque chose (rien pour artist, description, url...), et il n'affiche qu'une ligne à la fois de l'xml, en attandant 15sec environ avant de passer à la ligne suivante. De plus, il affiche également les balises (donc dans winamp & cie, je vois aussi les balises, par ex: <TITLE>mon titre</TITLE>.
Il y a donc deux problèmes à mon sens:
- comment je peux récupérer toutes les infos en une fois, et ne pas attendre xfois 15sec
- comment ne pas afficher les balises (dans le cas d'un parsing php, ce n'est pas un problème, mais si winamp &cie doivent fonctionner également avec le flux, il faudrait régler ça).

Je pense que ça se situe donc au niveau de la génération de l'xml, qui n'est sans doute pas bien formatté. Y a t'il un tuto là-dessus, ou quelqu'un peut-il m'expliquer.

Désolé pour la tartine, c'est une première experience avec icecast et donc plein de question.

Merci
Back to top
jcr
Modérateur français
Modérateur français


Joined: 14 Apr 2006
Posts: 544
Location: France, Auvergne

PostPosted: Wed Jan 02, 2008 6:31 pm    Post subject: Reply with quote

Nico_72 wrote:
Ahhh, ok, ce qui veut donc dire qu'un player comme itunes ou winamp "savent", à partir du moment où c'est un flux icecast (et cette info est dans le heder du flux), qu'il existe un fichier status.xsl, et c'est ce fichier que ces clients appellent ?

Non, absolument pas. Les status.xsl, status2.xsl, etc... font partie de la gestion interne et de l'administration du serveur Icecast.
Les variables retournées par les appels à ces scripts correspondent aux métadonnées présentes dans les flux Ogg/Vorbis ou MP3.
Les clients d'écoute genre Winamp, ou XMMS ne s'intéressent qu'au titre et à l'artiste, d'autres clients plus musclés, genre Amarok peuvent également afficher d'autres infos genre nom du stream, titre d el'album si le tag est présent, voire le champ Comment d'un Ogg ou MP3, si le client de service (ices, SAM3, Traktor, IDJC) le transmmettent dans leur flux.

Quote:
Ca veut donc dire que si je remanie status.xsl à "ma sauce", les clients winamp&cie ne pourront surement plus lire correctement les infos, puisque sa structure aura changé?


Non, absolument pas. les players qui lisent le flux ne savent même pas qu'il existe un status.xsl.

Quote:
Mais il n'y a pas moyen d'appeler directement le fichier xml avec les infos, c'est un peut plus propre que de faire un parsing du code html généré, nan ?


Techniquement parlant, le service HTTP d eicecast est full XML. Les appels standards sont via des XSL, et le code renvoyé est très clair. status.xml retourne un DOCTYPE HTML, tandis que status2 retourne les infos au format PRE, ce qu'indique l'en-tête.

Quote:
Bref, la meilleure solution semble de faire un my_status.xsl ou je formatte tout comme je le souhaite, vous me confirmez ? Car on m'a également parlé d'une info à faire passer dans le header de la requête http pour demander que les metadata soient envoyés dans le header de la réponse. Quid?


Pourquoi se compliquer la vie quand il est si simple d'utiliser directement les valeurs retournées. La solution est ultra simple, voir un peu plus bas...

Quote:
Autre chose, si je prends la solution du parsing de my_status.xsl. Quand je regarde la source de status2.xsl (plus léger), j'ai ceci:

Code:
<xsl:for-each select="source">
<xsl:value-of select="@mount" />,,<xsl:value-of select="name" />,<xsl:value-of select="listeners" />,<xsl:value-of select="description" />,<xsl:value-of select="artist" /> - <xsl:value-of select="title" />,<xsl:value-of select="url" />
</xsl:for-each>


Or le développeur responsable du serveur me dit qu'il génére cet xml:
Code:
PRINT "<PREVIOUS>"
PRINT "<TITLE>Nothing's gonna change your mind (Radio Edit) </TITLE>"
PRINT "<INTERPRET>Baldy Drawn Boy </INTERPRET>"
PRINT "<ALBUM> </ALBUM>"
PRINT "<LABEL>EMI Records </LABEL>"
PRINT "<YEAR>2006</YEAR>"
PRINT "<LENGTH>05:22</LENGTH>"
PRINT "<ISRC>h27216_01</ISRC>"
PRINT "<COVER>http://sasinternet.moodmedia.fr/demo_traXX/COVERS/27216.jpg </COVER>"
PRINT "</PREVIOUS>"
PRINT "<CURRENT>"
PRINT "<TITLE>Irreplaceable (Radio edit) </TITLE>"
PRINT "<INTERPRET>Beyoncé </INTERPRET>"
PRINT "<ALBUM> </ALBUM>"
PRINT "<LABEL>Sony BMG </LABEL>"
PRINT "<YEAR>2006</YEAR>"
PRINT "<LENGTH>03:48</LENGTH>"
PRINT "<ISRC>h27266_01</ISRC>"
PRINT "<COVER>http://sasinternet.moodmedia.fr/demo_traXX/COVERS/27266.jpg </COVER>"
PRINT "</CURRENT>"
PRINT "<NEXT>"
PRINT "<TITLE>Long way 2 go (Radio edit) </TITLE>"
PRINT "<INTERPRET>Cassie </INTERPRET>"
PRINT "<ALBUM> </ALBUM>"
PRINT "<LABEL>Bad boy records </LABEL>"
PRINT "<YEAR>2006</YEAR>"
PRINT "<LENGTH>03:40</LENGTH>"
PRINT "<ISRC>h27267_01</ISRC>"
PRINT "<COVER>http://sasinternet.moodmedia.fr/demo_traXX/COVERS/27267.jpg </COVER>"
PRINT "</NEXT>"

Le développeur semble s'être planté quelque part... Voici un exemple BRUT de ce que retourne status2.xsl en le récupérant par exemple via wget ou Curl en PHP:
Code:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pre PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<pre>
MountPoint,Connections,Stream Name,Current Listeners,Description,Currently Playing,Stream URL
Global,Client:7196 Source: ,,,,
/live128.ogg,,FlyDance,12,,Grand Funk Railroad - Into The Sun,</pre>

Qui retourne bien ce qu'on peut ou veut afficher sur une page web. Le parsing en PHP est d'une simplicité enfantine avec ce type de retour.

Quote:
chose (rien pour artist, description, url...), et il n'affiche qu'une ligne à la fois de l'xml, en attandant 15sec environ avant de passer à la ligne suivante.

ça signifie que l'algo utilisé pour la requête est mauvais. un wget sur status2.xsl met moins de 120 millisecondes...

Quote:
De plus, il affiche également les balises (donc dans winamp & cie, je vois aussi les balises, par ex: <TITLE>mon titre</TITLE>.

Il y a donc deux problèmes à mon sens:
- comment je peux récupérer toutes les infos en une fois, et ne pas attendre xfois 15sec
- comment ne pas afficher les balises (dans le cas d'un parsing php, ce n'est pas un problème, mais si winamp &cie doivent fonctionner également avec le flux, il faudrait régler ça).

Je pense que ça se situe donc au niveau de la génération de l'xml, qui n'est sans doute pas bien formatté. Y a t'il un tuto là-dessus, ou quelqu'un peut-il m'expliquer.

Désolé pour la tartine, c'est une première experience avec icecast et donc plein de question.

Merci[/quote]
La meilleure chose à faire est de ne pas modifier les xsl sttandards sans vraiment savoir ce qu'on fait Smile
Winamp & co ne verrront jamais les balises XML, sauf si les bidouillages réalisés ont modifié profondément le mode de fonctionnement du serveur icecast.

Pour utiliser TOUTES les infos utiles en PHP, voici un xsl getradiostatus.xsl que j'utilise:
Code:

<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
<xsl:output omit-xml-declaration="no" method="xml" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
<xsl:template match = "/icestats" >
<pre>
MountPoint,Server Name,Description,Data Type,Bitrate,Quality,Video Quality,Frame Size,Frame Rate,Listeners,Peak Listeners,Genre,Server URL,Artist,Title
<xsl:for-each select="source">
<xsl:value-of select="@mount" />|<xsl:value-of select="server_name" />|<xsl:value-of select="server_description" />|<xsl:value-of select="server_type" />|<xsl:value-of select="bitrate" />|<xsl:value-of select="quality" />|<xsl:value-of select="video_quality" />|<xsl:value-of select="frame_size" />|<xsl:value-of select="frame_rate" />|<xsl:value-of select="listeners" />|<xsl:value-of select="listener_peak" />|<xsl:value-of select="genre" />|<xsl:value-of select="server_url" />|<xsl:value-of select="artist" />|<xsl:value-of select="title" />
_END_
</xsl:for-each>
</pre>
</xsl:template>
</xsl:stylesheet>

Ce xsl contient une boucle foreach qui permet d'avoir plusieurs mountpoints. S'il n'y en a qu'un seul, ça fonctionne aussi bien. Voici un exemple de ce qui est envoyé à ton PHP:
Code:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pre PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<pre>
MountPoint,Server Name,Description,Data Type,Bitrate,Quality,Video Quality,Frame Size,Frame Rate,Listeners,Peak Listeners,Genre,Server URL,Artist,Title
/robot128.ogg|FlyDance|Electro lounge music|vorbis|128|3.00||||12|18|Electro|http://www.flydance.eu|Andre Visior|Skyline
_END_
</pre>

On dispose de beaucoup d'informations... peut-être même plus que tu n'en voudrais...
Pour afficher ça sur un site, il suffit d'écrire un petit module PHPO du genre:
Code:

<div>
<center><br>
<?php
/**
* Icecast Radio Status for Enfin! 1.0.x
* @version 1.0
* @package mod_icecast
* @copyright (C) 2005 by DJ Anubis <anubis@lab-project.net> - All rights reserved
* @license GPL
*/

# Don't allow direct acces to the file
 defined( '_LABSYS' ) or die( 'Direct Access to this location is not allowed.' );

$radioname = System::getParam( 'Icecast', 'StationName' ) ;
$host = System::getParam( 'Icecast','IcecastHost' ) ;
$port = System::getParam( 'Icecast','IcecastPort' ) ;
$picsrc = System::getParam( 'Icecast', 'IcecastIcon' ) ;
$iconalt = System::getParam( 'Icecast', 'IcecastSlogan' ) ;
$mstream = System::getParam( 'Icecast', 'IcecastMount' ) ;
$strlisten = System::getParam( 'Icecast', 'ListenURI' ) ;
$pic = '<img src="$picsrc" align="center" border=0 width="128" height="128" alt="$iconalt" title="$iconalt" />' ;

/**
 * Get information from Icecast Server using custom getradiostatus.xsl service
*/
$msg = http_get( "http://$host:$port/getradiostatus.xsl" ) ;

$spl = explode( '<pre>', $msg ) ;
$spl = str_replace( '</pre>', '', $spl[1] ) ;
$spl = explode( "<br/>", $spl ) ;
$flds = $spl[0] ;
$spl = explode( "\n", $flds ) ;
array_shift( $spl ) ;
$stations = array() ;
foreach ( $spl as $e ) {
   if ( ( $e !== '_END_' ) && !empty( $e ) ) {
      $p = explode( '|', $e ) ;
      $stations[$p[0]]['Name'] = $p[1] ;
      $stations[$p[0]]['Description'] = $p[2] ;
      $stations[$p[0]]['Listeners'] = $p[9] ;
      $stations[$p[0]]['Peak'] = $p[10] ;
      $stations[$p[0]]['Artist'] = $p[14] ;
      $stations[$p[0]]['Title'] = $p[13] ;
   }
}
if ( !empty( $stations["/$mstream"]['Name'] ) ) {
   $curtitle = $stations["/$mstream"]['Title'] ;
   $curartist = $stations["/$mstream"]['Artist'] ;
   $listeners = $stations["/$mstream"]['Listeners'] ;
   $peak = $stations["/$mstream"]['Peak'] ;
   $stream = $stations["/$mstream"]['Name'] ) ;
   $curtitle = str_replace( '_', '', $curtitle ) ;
   $curartist = str_replace( '_', '', $curartist ) ;
   echo "<font color=\"White\">DJ en ligne:</font><br /><strong>$stream</strong><br />" ;
   echo '<a href="' . $strlisten . '">' . $pic . '</a><br />' . "\n" ;
   echo "<font size=\"+1\" color=\"#ff0000\"><strong>$curtitle</strong></font><br /><strong>$curartist</strong><br />" ;
   echo '<hr />Auditeurs: <font size="+1"><strong>' . $listeners . '</strong></font><br />' ;
   echo 'Record: ' . $peak . '<br />' ;
} else {
   echo "<br />$stream Offline<br />" ;
}
?>
  </center> <br/>
</div>

Ce code est relativement clair et ne devrait pas poser d eproblème à adapter à ton site en PHP. Les variables avec les System::getParam() ont des noms suffisamment clairs...
_________________
Epsilon Friends Radio Icecast Radio on CentovaCast admin panel. Icecast hosting
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
Anonymous
Guest





PostPosted: Thu Jan 03, 2008 1:06 pm    Post subject: Reply with quote

Bonjour,

d'abord merci bcp de prendre le temps de m'aider comme cela Wink

Je pense avoir bien compris ton explication et vais mettre en place les scripts très clair que tu me proposes.

J'ai toutefois encore 2-3 questions:
Quote:
Les variables retournées par les appels à ces scripts correspondent aux métadonnées présentes dans les flux Ogg/Vorbis ou MP3.

N'y a t'il pas alors moyen de récupérer directement ces données via le flux en flash ou php? Ca ferait une étape de moins.


Quote:
Quote:
Quote:
Bref, la meilleure solution semble de faire un my_status.xsl ou je formatte tout comme je le souhaite, vous me confirmez ? Car on m'a également parlé d'une info à faire passer dans le header de la requête http pour demander que les metadata soient envoyés dans le header de la réponse. Quid?


Pourquoi se compliquer la vie quand il est si simple d'utiliser directement les valeurs retournées. La solution est ultra simple, voir un peu plus bas...

Pour être bien sûr de bien comprendre ton propos, tu me dis que le plus simple est de faire cet xsl perso (genre getradiostatus.xsl) et de ne pas se compliquer la vie avec l'autre possibilité (infos dans le header, etc...), c'est bien cela?


Quote:
Le développeur semble s'être planté quelque part... Voici un exemple BRUT de ce que retourne status2.xsl en le récupérant par exemple via wget ou Curl en PHP:
Code:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pre PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<pre>
MountPoint,Connections,Stream Name,Current Listeners,Description,Currently Playing,Stream URL
Global,Client:7196 Source: ,,,,
/live128.ogg,,FlyDance,12,,Grand Funk Railroad - Into The Sun,</pre>

Qui retourne bien ce qu'on peut ou veut afficher sur une page web. Le parsing en PHP est d'une simplicité enfantine avec ce type de retour.

Quote:
Quote:
chose (rien pour artist, description, url...), et il n'affiche qu'une ligne à la fois de l'xml, en attendant 15sec environ avant de passer à la ligne suivante.


ça signifie que l'algo utilisé pour la requête est mauvais. un wget sur status2.xsl met moins de 120 millisecondes...

Effectivement, je pense que le développeur s'est planté, car pour l'instant, la seule info en rapport avec le morceau joué qui a une valeur rempli dans status2.xsl est title.
Et quand tu me dis que le wget met moins de 120millisec, je suis d'accord, chez moi aussi c'est rapide, pas de problème d'algo à ce niveau là, sauf que, si par exemple le xml envoyé est

Quote:
<CURRENT>
<TITLE>Irreplaceable (Radio edit) </TITLE>
<INTERPRET>Beyoncé </INTERPRET>
<ALBUM> </ALBUM>
<LABEL>Sony BMG </LABEL>
<YEAR>2006</YEAR>
<LENGTH>03:48</LENGTH>
<ISRC>h27266_01</ISRC>
<COVER>http://sasinternet.moodmedia.fr/demo_traXX/COVERS/27266.jpg </COVER>
</CURRENT>


et bien j'aurais dans status2.xsl d'abord la valeur <CURRENT> (dans title donc), puis si je rafraichis après avoir attendu quelques secondes, j'aurais la valeur <TITLE>Irreplaceable (Radio edit) </TITLE> (avec les balises), puis
<INTERPRET>Beyoncé </INTERPRET>... et ainsi de suite, comme si il faisait un cycle sur toutes les lignes du xml. Donc le problème n'est pas que la réponse soit lente à venir, mais qu'elle ne soit pas complète (sans parler des balises qui ne devraient pas être là).

Le problème est qu'en principe je ne dois pas du tout m'occuper de cette partie là du projet, mais la personne qui le fait n'a pas l'air de connaître très bien l'utilisation et la config d'icecast.

Donc y aurait-il un lien vers un tuto que je pourrais luis filer qui explique comment il doit configurer son bazar afin que je recoive en UNE FOIS, toutes les infos correctement formattées.

Enfin, dans les scripts que tu me donnes, je peux effectivement récupérer tout un tas d'infos sur le morceau en cours. Dans mon cas, je dois effectivement afficher certaines de ces infos, mais également le titre de la NEXT SONG et PREVIOUS SONG. Cela est-il un problème à ton avis?
En d'autres termes, puis ajouter dans le xsl toutes les infos que je veux, par exemple
|<xsl:value-of select="previous_song" />|<xsl:value-of select="next_song" />
à condition bien sûr que des variables portant ce nom soient envoyées ?

Merci encore
Back to top
jcr
Modérateur français
Modérateur français


Joined: 14 Apr 2006
Posts: 544
Location: France, Auvergne

PostPosted: Thu Jan 03, 2008 3:32 pm    Post subject: Reply with quote

Nico_72 wrote:

N'y a t'il pas alors moyen de récupérer directement ces données via le flux en flash ou php? Ca ferait une étape de moins.

La solution pour récupérer les métadonnées en PHP a été donnée, via une récupération des variables du serveur. Flash n'est pas prévu pour ce genre de chose.
Pour que PHP prenne directement les données dans le flux, ça impliquerait d efaire tourner une routine PHP en daemon sur le serveur, que cette routine lise le flux, le décode, en extraie les métadonnées... Ce serait plus complexe, moins fiable et gros consommateur d eresources serveur pour pas grand chose.

Quote:

Pour être bien sûr de bien comprendre ton propos, tu me dis que le plus simple est de faire cet xsl perso (genre getradiostatus.xsl) et de ne pas se compliquer la vie avec l'autre possibilité (infos dans le header, etc...), c'est bien cela?


Puisque Icecast fournit une API très simple, basée sur des transformées XSL, très faciles à intégrer, quelque soit le langage, puisqu'il ne s'agit que d'un entête, un nommage de champs et leurs valeurs, il est difficile de faire plus simple et plus facile à traiter. Les bricolages avec les infos dans un header et autres subtilités, s'il est possible que celà fonctionne, c'est à la fois non conforme aux préconisations XHTML/XML du W3C et plus aléatoire.

Quote:
Effectivement, je pense que le développeur s'est planté, car pour l'instant, la seule info en rapport avec le morceau joué qui a une valeur rempli dans status2.xsl est title.
Et quand tu me dis que le wget met moins de 120millisec, je suis d'accord, chez moi aussi c'est rapide, pas de problème d'algo à ce niveau là, sauf que, si par exemple le xml envoyé est

Quote:
<CURRENT>
<TITLE>Irreplaceable (Radio edit) </TITLE>
<INTERPRET>Beyoncé </INTERPRET>
<ALBUM> </ALBUM>
<LABEL>Sony BMG </LABEL>
<YEAR>2006</YEAR>
<LENGTH>03:48</LENGTH>
<ISRC>h27266_01</ISRC>
<COVER>http://sasinternet.moodmedia.fr/demo_traXX/COVERS/27266.jpg </COVER>
</CURRENT>


Etant donné que cette structure retournée n'est pas vraiment standard, il faut en faire un parsing correct, et c'est dans la boucle de parsing que le développeur a du faire une erreur, en retournant à chaque fois la première valeur trouvée, au lieu de formater l'ensemble via une fonction d'aggrégation des valeurs. Si le sbalises apparaissent directement dans le HTML, il y a en plus des erreurs d eformatage de la chaine.

Quote:
Donc y aurait-il un lien vers un tuto que je pourrais luis filer qui explique comment il doit configurer son bazar afin que je recoive en UNE FOIS, toutes les infos correctement formattées.


Il n'existe pas de tuto simple, à part l'exemple avec getradiostatus.xsl et mon petit morceau de code PHP.

Quote:
Enfin, dans les scripts que tu me donnes, je peux effectivement récupérer tout un tas d'infos sur le morceau en cours. Dans mon cas, je dois effectivement afficher certaines de ces infos, mais également le titre de la NEXT SONG et PREVIOUS SONG. Cela est-il un problème à ton avis?
En d'autres termes, puis ajouter dans le xsl toutes les infos que je veux, par exemple
|<xsl:value-of select="previous_song" />|<xsl:value-of select="next_song" />
à condition bien sûr que des variables portant ce nom soient envoyées ?


J'ai l'impression qu'il y a confusion entre serveur de streaming (icecast) et gestionnaire de Playlist...
Icecast est un serveur de flux, il ne fait pas de traitements, il reçoit un flux d'un client émetteur et le renvoie vers n auditeurs. C'est le rôle de tous les serveurs de flux.

Pour obtenir le prev song, il existe diverses solutions, soit récupérer, via tail par exemple, le playlist.log de slogs du serveur, soit, sur le site web, de conserver le titre en cours et de comparer dans la fonction avec celui renvoyé par le service icecast.
Pour le next song, il faudrait que le client émetteur soit fichu de l'envoyer. Hors, si celà est possible si tu fonctionnes avec une playlist, une émission en live n'a strictement aucun moyen de le savoir, sauf à utiliser une véritable régie professionnelle.

Rien n'empêche d'envoyer au serveur icecast des balises supplémentaires à celles existantes, mais il y a de très fortes probabilité que la plupart des clients émetteurs connus ne sachent pas le faire...
_________________
Epsilon Friends Radio Icecast Radio on CentovaCast admin panel. Icecast hosting
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
Anonymous
Guest





PostPosted: Thu Jan 03, 2008 5:32 pm    Post subject: Reply with quote

Quote:
La solution pour récupérer les métadonnées en PHP a été donnée, via une récupération des variables du serveur. Flash n'est pas prévu pour ce genre de chose.

Ce que je peux éventuellement faire c'est un xsl qui fait une sortie au format xml pour que Flash puisse y accéder directement sans l'intermédiaire d'une page php, je chipote un peu, certes, mais il me semble que ça simplifie un peu.


Quote:
Etant donné que cette structure retournée n'est pas vraiment standard, il faut en faire un parsing correct, et c'est dans la boucle de parsing que le développeur a du faire une erreur, en retournant à chaque fois la première valeur trouvée, au lieu de formater l'ensemble via une fonction d'aggrégation des valeurs. Si le sbalises apparaissent directement dans le HTML, il y a en plus des erreurs d eformatage de la chaine.

Je n'ai pas vraiment ce problème entre les mains en fait, tout ce que je peux faire c'est constaté les infos que je reçois dans getradiostatus.xsl, et malheureusement, seul la variable title s'initialise, artist par exemple reste désepérement vide, et je ne sais pas ce qu'il doit faire pour régler cela.

On avait d'abord pensé à faire passer toutes les infos concaténées dans title, mais il y a une limite de 128o apparement, ce qui est trop court.

En imaginant qu'on règle ce problème, tu me dis donc:
Quote:
Rien n'empêche d'envoyer au serveur icecast des balises supplémentaires à celles existantes, mais il y a de très fortes probabilité que la plupart des clients émetteurs connus ne sachent pas le faire...

Comme visiblement ces infos Next et Previous song sont "précalculées" en fonction de la playlist (ce n'est pas du live, la playlist ne bouge pas, et quand elle change, ils "recalculent" tous les next et previous), on peut donc imaginer d'après ce que tu me dis que je puisse récupérer et afficher dans mon xsl des variables de ce genre:
|<xsl:value-of select="previous_song" />|<xsl:value-of select="next_song" />

Bon, je me rends compte que ma connaissance d'icecast et de l'architecture du système est très limitée, mon boulot est à la base de faire un player en flash affichant diverses données, je m'excuse donc pour mon ignorance.

Le temps de finir ce post, j'ai eu une nouvelle discussion et à priori on s'achemine vers une solution légèrement diffèrente. Puisque le développeur ne parviens pas à initialiser correctement les différentes variables qu'il me faut, il va juste mettre dans la variable title l'adresse du fichier xml qui contiendra lui toutes ces infos. Du coup je pourrai même y accéder directement en Flash, sans passer par un parsing php. Je dis juste au cas où tu aurais un avis défavorable sur cette solution.

Et encore encore encore merci Smile
Back to top
Display posts from previous:   
Post new topic   Reply to topic    Icecast Streaming Media Server Forum Index -> Forum Francophone All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2002 phpBB Group
subRebel style by ktauber