Récupération de liste de radios (Nom + Url)

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Récupération de liste de radios (Nom + Url)

Message par Ar-S »

Yop.

Pour les amateurs de lecteur de webradios...
Je me suis amusé à faire un petit parser qui permet de récupérer toute la liste des web radios contenues dans le fichier "Télécharger le fichier VLC - PC" de cette page
http://fluxradios.blogspot.com/2017/07/vlc-france.html
Rien n'est ecrit sur le disque dur.

J'ai créé cette routine de façon à permettre de parser d'autres listes XML (ici fichier xspf) du moment ou vous connaissez les balises adéquates.

EnJoYeZ :mrgreen:

Code : Tout sélectionner

InitNetwork()

Structure Radio
  Location.s
  Title.s
EndStructure

Global NewMap Radios.Radio()

Procedure MapRadios(BaliseLOC.s,BaliseTITRE.s,AdresseFichier.s)
  ; by AR-S // 01/12/2018 // PB 5.62 x64
  ; v1.0
  ; Récupérer les listes des radios du fichier "Télécharger le fichier VLC - PC "
  ; de la page : http://fluxradios.blogspot.com/2017/07/vlc-france.html
  ; La routine devrait permettre de parser d'autres listes XML du moment ou vous connaissez les balises
  
  Protected B_LOC_OUVERTE.s, B_LOC_FERMEE.s, B_TITRE_OUVERTE.s, B_TITRE_FERMEE.s, Contenu.s, NBR_Radio, DepartCurseur, FinCurseur
  
  ; Petite modification de lien au cas ou ce soit du dropbox...
  If FindString(AdresseFichier.s,"dl=0")
    AdresseFichier.s = ReplaceString(AdresseFichier.s,"dl=0","dl=1" )
  EndIf
  
  ; Récupération du fichier
  *Buffer = ReceiveHTTPMemory(AdresseFichier.s)
  If *Buffer
    Taille = MemorySize(*Buffer)
    Contenu.s = PeekS(*Buffer, Taille, #PB_UTF8|#PB_ByteLength)
    FreeMemory(*Buffer)
    
    ; Création des balises
    B_LOC_OUVERTE.s = BaliseLOC.s
    B_LOC_FERMEE.s  = ReplaceString(BaliseLOC.s,"<","</")
    
    B_TITRE_OUVERTE.s = BaliseTITRE.s
    B_TITRE_FERMEE.s  = ReplaceString(BaliseTITRE.s,"<","</")
    
    ; Traitement des balise et mappage des radios (url / titre)
    NBR_Radio = CountString( Contenu.s, B_LOC_FERMEE )
    Debug "Il y a " + Str(NBR_Radio) + " dans la liste"
    
     For i = 1 To NBR_Radio
      
      Name$ = "Radio"+Str(i)
      Debug Name$
      
      DepartCurseur = FindString(Contenu,B_LOC_OUVERTE,DepartCurseur)
      FinCurseur    = FindString(Contenu,B_LOC_FERMEE,DepartCurseur + Len(B_LOC_OUVERTE) )
      Radios(Name$)\Location = Mid( Contenu,DepartCurseur+Len(B_LOC_OUVERTE), FinCurseur-(DepartCurseur+Len(B_LOC_OUVERTE) ))
      Debug "LOCATION : " + Radios(Name$)\Location   
      DepartCurseur = FinCurseur
      
      DepartCurseur = FindString(Contenu,B_TITRE_OUVERTE,DepartCurseur)
      FinCurseur    = FindString(Contenu,B_TITRE_FERMEE,DepartCurseur + Len(B_TITRE_OUVERTE) )
      Radios(Name$)\Title = Mid(Contenu,DepartCurseur+Len(B_TITRE_OUVERTE), FinCurseur-(DepartCurseur+ Len(B_TITRE_OUVERTE) ))
      Debug "TITLE : " + Radios(Name$)\Title   
      DepartCurseur = FinCurseur
      Debug ""
    Next  
    
    Retour = 1 
  Else
    Debug "Le téléchargement a échoué"
    Retour = 0
  EndIf
  
  ProcedureReturn Retour
EndProcedure


; /////////////// MAIN CODE /////////////////////////////////////////////////////////////////////////////////////

url$ = "https://www.dropbox.com/s/jed19lhhj9s3ajd/FR%20-%20-%20France%20-%20V.2018-03%20-%20PC.xspf?dl=0"
If MapRadios("<location>","<title>", url$) = 1
  Debug "Succes"
Else
  Debug "LoOserie"
EndIf


;Example 2 - PODCAST RADIO FRANCE
url$ = "http://radiofrance-podcast.net/podcast09/rss_16744.xml"
If MapRadios("<guid>","<title>", url$) = 1
  Debug "Succes"
Else
  Debug "LoOserie"
EndIf
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: Récupération de liste de radios (Nom + Url)

Message par Marc56 »

Version regex si on veut pas s'embêter avec les FindString :P
(en supposant que le fichier est déjà chargé)

Code : Tout sélectionner

ReadFile(0, "FR - - France - V.2018-03 - PC.xspf")
While Not Eof(0)
    Txt$ = ReadString(0, #PB_File_IgnoreEOL)
Wend    
CloseFile(0)

If CreateRegularExpression(0,"<location>(.+?)</location>.+?<title>(.+?)</title>", #PB_RegularExpression_DotAll)
    If ExamineRegularExpression(0, Txt$)
        While NextRegularExpressionMatch(0)
            Debug ""
            Debug RegularExpressionGroup(0,1)
            Debug RegularExpressionGroup(0,2)
        Wend
    EndIf
EndIf

FreeRegularExpression(0)
:wink:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Récupération de liste de radios (Nom + Url)

Message par Kwai chang caine »

Marche nickel, merci du partage ARS 8)

@Marc
Pfffff....les "raiguex" me blasent :|
Merci aussi pour le code de ARS lavé à 90° à la machine :mrgreen: et qui marche encore 8O
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Récupération de liste de radios (Nom + Url)

Message par Ar-S »

Oui les regex je suis pas fan non plus malgré leur intérêt certain(e)s.
Tous les chemins mènent à la ROM eux à Rome ;)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Récupération de liste de radios (Nom + Url)

Message par Kwai chang caine »

En fait… par "blasent" je veux dire que c'est un truc de ouf, d'une puissance incroyable, mais tellement compliquées que ça me blase de savoir que jamais je ne pourrais, ou aurais le courage de les appréhender :oops:
En fait, j'aimerais être FAN, pour reprendre ton expression, mais pourquoi pas être FAN de la flagellation ou tout autre "joyeuserie" du même type :mrgreen:

Image

En fait elles me font penser à un de ces heureusement pas trop nombreux trucs dont l'ASM ou le C font aussi partie. :|

Etre en admiration, voir même à genou devant quelque chose ou quelqu'un, tout en sachant qu'il restera à jamais hors de sa portée c'est blasant au final. :|
C'est un peu le nirvana qui recule au fur et à mesure que l'on avance

Image

Et en parlant de personnes vénérables, … je ne sais pas pourquoi une parmi tant d'autres, me vient immédiatement à l'esprit lorsque je mesure mon admiration pour elle, et ceci depuis un très grand nombre d'années déjà 8)
Et particulièrement lorsque j'écris sur un site "bleu" :mrgreen:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre