|  | 		    
					
        
         
          
         
	
          | |  | Grab NowPlaying-tekst fra DR's Netradioafs~ Fra : Ace
 | 
 Dato :  31-08-10 08:31
 | 
 |  | 
 
            Hejsa. 
 DR har for rimelig lang tid siden ændret deres måde at vise hvad
 de spiller på deres forskellige kanaler i deres
 netradioafspiller, og lige siden da har jeg forsøgt at finde ud
 af hvordan jeg skulle bære mig ad med at "grabbe"
 NowPlaying-teksten - men må nu erkende at jeg desværre er stødt
 på lidt af en mur hvad det angår :S
 Jeg tror at dataen hentes fra
http://www.dr.dk/drnetradio/inc/poll/poll.drxml  men ved så bare
 ikke hvordan mit script bør se ud for at være i stand til at
 "hente" de enkelte artist- og title-informationer fra de
 individuelle kanaler.
 Jeg var så heldig, at der i sin tid var en venlig sjæl herinde,
 som assisterede mig da jeg første gang havde samme problem, og
 håber derfor at der denne gang måske vil være nogle som lettere
 kan se løsningen end jeg, og evt. give et eksempel på hvordan et
 php-script, til dette formål, kunne se ud. 
 På forhånd tak.
 Venligst 
 Ace
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
  Chano Andersen (31-08-2010) 
 
	
          | |  | Kommentar Fra : Chano Andersen
 | 
 Dato :  31-08-10 19:34
 | 
 |  | 
 
            Den 31-08-2010 09:31, Ace skrev:
 > Jeg tror at dataen hentes fra
 > http://www.dr.dk/drnetradio/inc/poll/poll.drxml  men ved så bare
 > ikke hvordan mit script bør se ud for at være i stand til at
 Det var da et helt horribelt format..
 > "hente" de enkelte artist- og title-informationer fra de
 > individuelle kanaler.
 Umiddelbart ligner det noget blanding af XML og JSON. Prøv at kigge på 
 hvordan de to formater håndteres, jeg har desværre ikke lige tiden til 
 at skrive noget der kan parse DR's data.
 - Chano Andersen
            
             |  |  | 
  Chano Andersen (31-08-2010) 
 
	
          | |  | Kommentar Fra : Chano Andersen
 | 
 Dato :  31-08-10 19:36
 | 
 |  | Den 31-08-2010 20:33, Chano Andersen skrev:
 > Umiddelbart ligner det noget blanding af XML og JSON. Prøv at kigge på
 
 Rettelse.. Det er HTML og JSON.. Du er interesseret i JSON delen, der
 står mellem
 <div id="nowNext">
 og
 </div>
 
 Tiden til et eksempel på at trække det ud, er desværre heller ikke
 tilstede. Men der er sikkert eksempler på at hente noget ud fra HTML
 dokumenter mellem 2 tags, at finde via google.
 
 - Chano Andersen
 
 
 |  |  | 
  Martin Larsen (31-08-2010) 
 
	
          | |  | Kommentar Fra : Martin Larsen
 | 
 Dato :  31-08-10 23:13
 | 
 |  | Chano Andersen wrote:
 
 > Det var da et helt horribelt format..
 
 Ja!
 
 Det var vist mig der hjalp ACE i sin tid, og umiddelbart tænkte jeg så
 nu at det burde være let nok, men der er grumme fejl i deres
 opmarkering. Jeg fandt fx denne:
 
 {
 "st":"P3",
 "curPro":"
 }
 
 curPro bør vise det aktuelle program, hvad der da også gør i de fleste
 tilfælde. Er der af en eller anden grund ikke noget curPro, burde de i
 det mindste vise "curPro":"" altså med 2 stk. apostroffer. Det her er
 hverken fugl eller fisk.
 
 Deres fejl gør det vanskeligt at parse med både JSON og regex, men
 skulle det endelig være, ville jeg holde på at bruge regex selv om PHP
 udmærket kan håndtere JSON. Blot ikke fejlbehæftet JSON!
 
 Martin
 
 
 
 |  |  | 
   Martin Larsen (31-08-2010) 
 
	
          | |  | Kommentar Fra : Martin Larsen
 | 
 Dato :  31-08-10 23:37
 | 
 |  | 
 
            Martin Larsen wrote:
 > Deres fejl gør det vanskeligt at parse med både JSON og regex, men
 > skulle det endelig være, ville jeg holde på at bruge regex
 Ikke desto mindre er her noget kode som ser ud til at virke. Garanterer 
 dog ikke at det altid virker - der kan være andre fejl i deres opmarkering!
 Demo: http://kreacom.dk/files/playlist.php Sovs: http://kreacom.dk/files/playlist.php.txt <?php
 $url = 'http://www.dr.dk/drnetradio/inc/poll/poll.drxml'; $playlistdata = file_get_contents($url);
 $regex = <<<EOD
 "st":"(?P<station>[^"]*)"[\s,]*
 (?:"curPro":"(?P<curpro>[^"}]*)")?[\s,]*
 (?:"nxtPro":"(?P<nxtpro>[^"}]*)")?[\s,]*
 (?:"curNum":\s*{"tit":"(?P<title>[^"}]*)"[\s,]*"art":"(?P<artist>[^"}]*))?
 EOD;
 preg_match_all("%$regex%x", $playlistdata, $matches, PREG_SET_ORDER);
 foreach($matches as $match) {
      foreach($match as $key => $value) {
          if (is_numeric($key) || trim($value)=='') {
              unset($result[$key]);
              continue;
          }
          echo "$key: $value<br>";
      }
      echo "<br>";
 }
 ?>
            
             |  |  | 
    Ace (01-09-2010) 
 
	
          | |  | Kommentar Fra : Ace
 | 
 Dato :  01-09-10 21:35
 | 
 |  | 
 
            Martin Larsen wrote: 
 >  
 > Ikke desto mindre er her noget kode som ser ud til at virke. Garanterer  
 > dog ikke at det altid virker - der kan være andre fejl i deres opmarkering! 
 >  
 > Demo: http://kreacom.dk/files/playlist.php > Sovs: http://kreacom.dk/files/playlist.php.txt >  
 > <?php 
 > $url = 'http://www.dr.dk/drnetradio/inc/poll/poll.drxml'; > $playlistdata = file_get_contents($url); 
 >  
 > $regex = <<<EOD 
 > "st":"(?P<station>[^"]*)"[\s,]* 
 > (?:"curPro":"(?P<curpro>[^"}]*)")?[\s,]* 
 > (?:"nxtPro":"(?P<nxtpro>[^"}]*)")?[\s,]* 
 > (?:"curNum":\s*{"tit":"(?P<title>[^"}]*)"[\s,]*"art":"(?P<artist>[^"}]*))? 
 > EOD; 
 >  
 > preg_match_all("%$regex%x", $playlistdata, $matches, PREG_SET_ORDER); 
 > foreach($matches as $match) { 
 >      foreach($match as $key => $value) { 
 >          if (is_numeric($key)  trim($value)=='') { 
 >              unset($result[$key]); 
 >              continue; 
 >          } 
 >          echo "$key: $value<br>"; 
 >      } 
 >      echo "<br>"; 
 > } 
 > ?> 
 > 
 Hold da op Martin, tusind tak for din hjælp (endnu engang :)) .. din løsningen
 er i hvertfald langt mere stabil, end hvad jeg var på vej udi. Min endnu
 sparsomme indsigt i PHP's mange muligheder, gjorde at jeg var rimelig meget på
 herrens mark, pga. den type markup som DR i dette tilfælde har gjort brug af.
 Igen, mange tak :)
 Ace
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
     Martin Larsen (01-09-2010) 
 
	
          | |  | Kommentar Fra : Martin Larsen
 | 
 Dato :  01-09-10 21:51
 | 
 |  | Ace wrote:
 
 > Igen, mange tak:)
 
 Selv tak :)
 
 Jeg opdagede lige en fejl som ikke har betydning for demoen, men måske
 har det hvis du bygger videre på det.
 
 Erstat
 
 unset($result[$key]);
 
 med
 
 unset($match[$key]);
 
 Det der sker i linjen ovenover er at tomme matches smides væk, så der fx
 kun står en "title" der hvor der faktisk er en titel. Uden linjen ville
 disse blot springes over, men ikke smides væk.
 
 Hilsen
 Martin
 
 
 |  |  | 
  Martin (06-09-2010) 
 
	
          | |  | Kommentar Fra : Martin
 | 
 Dato :  06-09-10 19:36
 | 
 |  | 
 
            On 31-08-2010 20:33, Chano Andersen wrote:
 > Den 31-08-2010 09:31, Ace skrev:
 >> Jeg tror at dataen hentes fra
 >> http://www.dr.dk/drnetradio/inc/poll/poll.drxml  men ved så bare
 >> ikke hvordan mit script bør se ud for at være i stand til at
 >
 > Det var da et helt horribelt format..
 Det er et hamrende skønt format, og utrolig lækkert at arbejde med - 
 faktisk nemmere end XML :)
 Dog selvfølgelig burde koden være korrekt, men desværre ikke    |  |  | 
   Chano Andersen (06-09-2010) 
 
	
          | |  | Kommentar Fra : Chano Andersen
 | 
 Dato :  06-09-10 22:01
 | 
 |  | Den 06-09-2010 20:36, Martin skrev:
 > On 31-08-2010 20:33, Chano Andersen wrote:
 >> Det var da et helt horribelt format..
 >
 > Det er et hamrende skønt format, og utrolig lækkert at arbejde med -
 > faktisk nemmere end XML :)
 >
 
 Det kommer vel an på om det er et menneske eller en maskine der skal
 læse det? :P
 
 - Chano Andersen
 
 
 |  |  | 
  Henning (07-09-2010) 
 
	
          | |  | Kommentar Fra : Henning
 | 
 Dato :  07-09-10 07:58
 | 
 |  | 
 
            On 2010-08-31 20:33, Chano Andersen wrote:
 > Den 31-08-2010 09:31, Ace skrev:
 >> Jeg tror at dataen hentes fra
 >> http://www.dr.dk/drnetradio/inc/poll/poll.drxml  men ved så bare
 >> ikke hvordan mit script bør se ud for at være i stand til at
 > 
 > Det var da et helt horribelt format..
 Ja ikke det mest logiske, men så galt er det nu heller ikke.
 >> "hente" de enkelte artist- og title-informationer fra de
 >> individuelle kanaler.
 Jeg har skruet et script sammen som samler data sammen i et array.
 Det ligger på http://hpc.dk  incl koden.
 /Henning
            
             |  |  | 
   Martin (07-09-2010) 
 
	
          | |  | Kommentar Fra : Martin
 | 
 Dato :  07-09-10 14:00
 | 
 |  | 
 
            On 07-09-2010 08:57, Henning wrote:
 > On 2010-08-31 20:33, Chano Andersen wrote:
 >> Den 31-08-2010 09:31, Ace skrev:
 >>> Jeg tror at dataen hentes fra
 >>> http://www.dr.dk/drnetradio/inc/poll/poll.drxml  men ved så bare
 >>> ikke hvordan mit script bør se ud for at være i stand til at
 >>
 >> Det var da et helt horribelt format..
 >
 > Ja ikke det mest logiske, men så galt er det nu heller ikke.
 >
 >>> "hente" de enkelte artist- og title-informationer fra de
 >>> individuelle kanaler.
 >
 > Jeg har skruet et script sammen som samler data sammen i et array.
 >
 > Det ligger på http://hpc.dk  incl koden.
 PS
 Henning, du skal nok til at "lære" at bruge perl regular expressions 
 (preg) istedet for regular expressions (ereg) da denne motor med stor 
 sandsynlighed er på vej ud af PHP i version 6.0 (og deprecated i 5.3)
            
             |  |  | 
    Henning (08-09-2010) 
 
	
          | |  | Kommentar Fra : Henning
 | 
 Dato :  08-09-10 07:19
 | 
 |  | 
 
            On 2010-09-07 14:59, Martin wrote:
 > 
 > PS
 > Henning, du skal nok til at "lære" at bruge perl regular expressions
 > (preg) istedet for regular expressions (ereg) da denne motor med stor
 > sandsynlighed er på vej ud af PHP i version 6.0 (og deprecated i 5.3)
 Ja det kunne da godt være.
   |  |  | 
    Martin Larsen (08-09-2010) 
 
	
          | |  | Kommentar Fra : Martin Larsen
 | 
 Dato :  08-09-10 09:22
 | 
 |  | 
 
            Martin wrote:
 > Henning, du skal nok til at "lære" at bruge perl regular expressions
 > (preg) istedet for regular expressions (ereg) da denne motor med stor
 > sandsynlighed er på vej ud af PHP i version 6.0 (og deprecated i 5.3)
 preg er i øvrigt også meget rarere at arbejde med    |  |  | 
 |  |