Ne connaissant pas perl, et malgré les quelques infos glanée sur google, je patauge
J’ai un fichier xml online mis à jour en live contenant les titres des morceaux qui passent sur un stream
Ce fichier xml contient le titre en cours (happening), et les 4 précédents(happened).
Le fichier est de la forme :
<Schedule>
<Event status="happening" startTime="xx:xx:xx" eventType="song">
<s:Song title="MON TITRE 1">
<s:Artist name="MON ARTIST 1">
<m:Media runTime="xxx.xx"/>
</s:Artist>
</s:Song>
</Event>
<Event status="happened" startTime="xx:xx:xx" eventType="song">
<s:Song title="MON TITRE 2">
<s:Artist name="MON ARTIST 2">
<m:Media runTime="xxx.xx"/>
</s:Artist>
</s:Song>
</Event>
...
</Schedule>
le but est de récupérer le titre et l’artiste du morceau en cours, et lui uniquement.
voila le code que j’ai actuellement :
#! /usr/bin/perl
use LWP::Simple;
$url = "http://stream_xml_url/fichier.xml";
while (1)
{
my $content = get $url;
if ($content =~ m/status="happening" startTime=".*" eventType="song"><s:Song title="(.*)"><s:Artist name="(.*)">/i)
{
$string = join '', map { ucfirst lc } split /(\s+)/, $2;
print "En cours : $1 ($string)\n"
}
sleep (5);
}
le hic est qu’il ne récupère non pas les infos du morceau en status “happening”, mais les infos du morceau le plus vieux (le dernier dans le xml)
une idée ?