Petit utilitaire

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
mongis
Messages : 9
Inscription : jeu. 15/nov./2018 13:36

Petit utilitaire

Message par mongis »

Bonjour a tous,
Je vous explique brièvement mon problème, Je veut récupéré le titre et l’interprète d'un morceau diffuser sur un site de radio sur le Web (smoothjazz.com)
et je l’écrit dans un fichier, texte mis a jour quand le tire change.

Pour l’afficher sur un afficheur. cela fonctionner plutôt bien mais a présent que le HTTPS est généralisé cela ne fonctionne plus!

Code : Tout sélectionner

Global site.s = "http://www.smoothjazz.com"
;-declaration
Declare  ouvre_fenetre()
Declare.s SearchString(String.s,StartString.s,EndString.s)
Declare.s Url2Text2(Url.s, OpenType.b,ProxyAndPort.s)
Declare.s Url2Text(Url.s)
Declare.s filtre(Var.s)



;-initialisation
Enumeration ; fennetre
   #window
EndEnumeration
Enumeration ; gadgets
   #editeur
   #timer
   #editor
EndEnumeration

Enumeration ;Fichier
   #file
EndEnumeration


ouvre_fenetre()
;-boucle
Repeat
   Select WindowEvent()
      Case #PB_Event_Timer
      If  EventTimer() = #timer
         interpret.s= SearchString(Url2Text(Site.s),"<span class="+Chr(34)+"nowplaying_artist"+Chr(34)+">","<")
         titre.s= SearchString(Url2Text(Site.s),Chr(34)+"nowplaying_song"+Chr(34)+">","<")
         interpret.s=filtre(interpret.s)
         titre.s=filtre(titre.s)
         ; Affichage Editeur
         ClearGadgetItems(#editor)
         AddGadgetItem(#editor, 0,"Titre :"+titre.s)
         AddGadgetItem(#editor, 0, "Artist: "+interpret.s)
         
         If interpret.s<>"" And titre.s<>""
            
            If OpenFile(#file,"info.txt")
               TruncateFile(#File)
               WriteString(#file,interpret.s+"-")
               WriteString(#file,titre.s)
               CloseFile(#file)
            EndIf
         EndIf
         
      EndIf
      Case #PB_Event_CloseWindow
      End
   EndSelect
   
ForEver












; ********** Zone des Procedures **********************************
;- zone procedure
Procedure ouvre_fenetre()
   OpenWindow(#window,10,10,320,100,"resultat",#PB_Window_SystemMenu )
   EditorGadget(#editor,10,10,300,80)
   AddWindowTimer(#window, #timer, 10000) ; toute les 10 secondes
EndProcedure
Procedure.s SearchString(String.s,StartString.s,EndString.s)
   Global SearchStringIndex,SearchString.s
   SearchStringIndex=1
   SearchString=String
   Start=FindString(SearchString,StartString,SearchStringIndex)
   
   If Start
      Start=Start+Len(StartString)
      EndIndex=FindString(SearchString,EndString,Start)
      
      
      If EndIndex
         SearchStringIndex=EndIndex+Len(EndString)
         ProcedureReturn Mid(SearchString,Start,EndIndex-Start)
         Else
         EndIndex=Len(SearchString)+1
         SearchStringIndex=EndIndex+Len(EndString)
         ProcedureReturn Mid(SearchString,Start,EndIndex-Start)
      EndIf
      
      Else
      Start=1
      EndIndex=FindString(SearchString,EndString,Start)
      
      
      If EndIndex
         SearchStringIndex=EndIndex+Len(EndString)
         ProcedureReturn Mid(SearchString,Start,EndIndex-Start)
         Else
         EndIndex=Len(SearchString)+1
         SearchStringIndex=EndIndex+Len(EndString)
         ProcedureReturn Mid(SearchString,Start,EndIndex-Start)
      EndIf
      
   EndIf
EndProcedure
ProcedureDLL.s Url2Text2(Url.s, OpenType.b,ProxyAndPort.s)
   ; 1 INTERNET_OPEN_TYPE_DIRECT                       Resolves all host names locally.
   ; 0 INTERNET_OPEN_TYPE_PRECONFIG                    Retrieves the proxy Or direct configuration from the registry.
   ; 4 INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY  Retrieves the proxy Or direct configuration from the registry And prevents the use of a startup Microsoft JScript Or Internet Setup (INS) file.
   ; 3 INTERNET_OPEN_TYPE_PROXY                        Passes requests To the proxy unless a proxy bypass list is supplied And the name To be resolved bypasses the proxy. In this Case, the function uses INTERNET_OPEN_TYPE_DIRECT.
   
   isLoop.b=1
   INET_RELOAD.l = $80000000
   hInet.l=0
   hURL.l=0
   Bytes.l=0
   Buffer.s=Space(2048)
   res.s=""
   
   
   
   hInet = InternetOpen_("", OpenType, ProxyAndPort, "", 0)
   hURL = InternetOpenUrl_(hInet, Url, #Null, 0, INET_RELOAD, 0)
   
   Repeat
      InternetReadFile_(hURL,@Buffer, Len(Buffer), @Bytes)
      If Bytes = 0
         isLoop=0
         Else
         res = res + Left(Buffer, Bytes)
      EndIf
   Until isLoop=0
   
   InternetCloseHandle_(hURL)
   InternetCloseHandle_(hInet)
   ProcedureReturn res
EndProcedure

ProcedureDLL.s Url2Text(Url.s)
   ProcedureReturn Url2Text2(Url,1,"")
EndProcedure



; Procedure.s filtre(Var.s)
; ; By Dobro
; ; exemple de filtre
; For i=1 to len(var.s)
; extr.s=mid(var.s,i,1)
; If( asc(extr.s)>47 and asc(extr.s)<58) or (asc(extr.s)>64 and asc(extr.s)<91) or (asc(extr.s)>96 and asc(extr.s)<123) or asc(extr.s)=45
; sort.s=sort.s+extr.s
; Else
; sort.s=sort.s+""
; Endif
; Next i
; ProcedureReturn Sort.s
;
; Endprocedure


Procedure.s filtre(Var.s)
For i=32 To 255
   If i<100
      Var.s = ReplaceString(Var.s,"&#"+"0"+Str(i),Chr(i) )
      Else
      Var.s = ReplaceString(Var.s,"&#"+Str(i),Chr(i) )
   EndIf
Next i
   
   ; By Dobro
   ; autre exemple de filtre qui a l'avantage que nous voyons directement les caracteres que nous désirons garder , il suffit de les ajouter dans la chaine Ref.s
   ref.s="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-()[].' " ; << derniere caractere est un espace
   For i=1 To Len(var.s)
      ex.s=Mid(var.s,i,1)
      If FindString(ref.s,ex.s)>0
         sort.s=sort.s+ex.s
      EndIf
   Next i
   ProcedureReturn Sort.s
EndProcedure

; EPB
; IDE Options = PureBasic 5.62 (Windows - x64)
; Folding = -
; EnableXP
; Executable = titreload.exe
Voici le code je n'arrive pas a le faire fonctionner avec la nouvelle norme.
Pouvez vous m'aider?
Merci.
Cordialement.
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: Petit utilitaire

Message par Marc56 »

Tu t'embêtes beaucoup avec un vieux code contenant des API de téléchargement HTTP (InternetOpen_, InternetOpenUrl_ etc) alors que tu ne cherche qu'a extraire une partie du code source d'une page web et que PB a des fonctions pour.

Avec simplement ça:

Code : Tout sélectionner

  InitNetwork()

  *Buffer = ReceiveHTTPMemory("smoothjazz.com")
  If *Buffer
    Taille = MemorySize(*Buffer)
    Debug "Contenu: " + PeekS(*Buffer, Taille, #PB_UTF8|#PB_ByteLength)
    FreeMemory(*Buffer)
  Else
    Debug "Le téléchargement a échoué"
  EndIf

Tu récupère le code source HTML de la page en mémoire.
Tu peux aussi le faire version fichier avec ReceiveHTTPFile() vers le répertoire temporaire

Il suffit ensuite de faire une recherche de texte sur les balises HTML qui englobent les données.
<h2>SmoothJazz Now Playing</h2>
...
<span class="artist-name">Epic 92</span>
<span class="album-title">Atlanta Lights</span>
<span class="song-title">Road Less Traveled</span>
<div class="open-close-shop">
En une seule RegEx on fait ça. Mais tu peux aussi le faire avec FindString.

:wink:
mongis
Messages : 9
Inscription : jeu. 15/nov./2018 13:36

Re: Petit utilitaire

Message par mongis »

Bonjour
Merci pour le code par contre avec l'ancien code je généré un fichier texte qui été écrasé avec les nouvelles données au rythme de la playlist.
Comment peut on faire avec des instructions plus performantes?

Par ailleurs j'ai été ennuyer avec certains caractères qui s'afficher mal sur l'afficheur. C'est pour cela que le code est peut être un peut charger car il fallait
utiliser seulement des lettres et chiffres car l'afficheur suivait pas!

Merci de votre aide.

Cordialement.
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Petit utilitaire

Message par Ar-S »

Salut.

Pour info j'ai ajouté cette radio à mon lecteur ^^

En utilisant les codes "modernes" comme l'a dit Marc56, tu te simplifie la tâche.

Ici sans regex

Code : Tout sélectionner

InitNetwork()

Global CODEWEB.s

Procedure.s CatchWeb()
  html$=""
  
  *Buffer = ReceiveHTTPMemory("smoothjazz.com")
  If *Buffer
    Taille = MemorySize(*Buffer)
    html$ = "Contenu: " + PeekS(*Buffer, Taille, #PB_UTF8|#PB_ByteLength)
    FreeMemory(*Buffer)
  Else
    Debug "Le téléchargement a échoué"
    html$=""
  EndIf
ProcedureReturn html$  
EndProcedure

Procedure.s FindTAG(TAG.s)
  ; Ar-S
Protected TagSTART, TagEND  

TagSTART = FindString(CODEWEB,TAG,0)
TagSTART+Len(TAG) ; On ajoute la longueur du tag pour trouver le </span> de fin)
TagEnd = FindString (CODEWEB,"</span>",TagStart) 

ProcedureReturn Mid(CODEWEB,TagStart, TagEnd-TagStart)

EndProcedure


; MAIN CODE 

CODEWEB.s = CatchWeb()
If CODEWEB.s <> ""
  ;test
  Debug "ok"
  
  Artiste.s = FindTAG("<span class="+Chr(34)+"artist-name"+Chr(34)+">")
  Album.s = FindTAG("<span class="+Chr(34)+"album-title"+Chr(34)+">")
  Titre.s = FindTAG("<span class="+Chr(34)+"song-title"+Chr(34)+">")
  
  Debug "Artiste : " + Artiste
  Debug "Album : " + Album
  Debug "Titre : " + Titre


Else 
  
  ;test
  Debug "nok"
  
EndIf

A toi de mettre ça dans ton timer.

Cependant,
Il te sera toujours plus efficace d'utiliser une lib comme FMODex pouvant lire et récupérer les titres tout seul pour les radios compatibles (la grande majorité des webs radios le sont)
Ce qu'il faut c'est chopper la bonne URL de streaming.
Pour du aac 64kbps par exemple, tu peux voir sur cette page : https://www.smoothjazz.com/help?fn=smoothjazz_64.pls
qu'ils donnent l'adresse du fichier => http://351.cloudrad.io/listen.pls
Si tu ouvres ce fichier avec ton bloc note, tu t'aperçois de l'URL exacte du stream qui contient :
[playlist]
NumberOfEntries=2
File1=http://149.56.155.209:80/stream
Title1=SmoothJazz.com Global
Length1=-1
File2=http://144.217.153.67:80/live
Title2=SmoothJazz.com Global
Length2=-1
Version=2
Pour mon lecteur, je n'ai eu qu'à ajouter le nom de la radio et l'url désiré à savoir http://149.56.155.209:80/stream

Je ne sais pas ce que tu veux faire exactement mais j'espère qu'avec tout ça tu t'en sortiras.
Tu peux faire des recherches sur FMOD sur ce forum.
~~~~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 : 2148
Inscription : sam. 08/févr./2014 15:19

Re: Petit utilitaire

Message par Marc56 »

...avec l'ancien code je génère un fichier texte qui été écrasé avec les nouvelles données au rythme de la playlist.

Code : Tout sélectionner

            If OpenFile(#file,"info.txt")
               TruncateFile(#File)
               WriteString(#file,interpret.s+"-")
               WriteString(#file,titre.s)
               CloseFile(#file)
            EndIf
Tu utilises TruncatFile() dès l'ouverture, donc le pointeur en position zéro. Cela a le même effet que OpenFile() sans le paramètre d'ajout #PB_File_Append.
Seule différence, la date de création ne change pas.

Donc tu peux supprimer cette ligne (TruncateFile(#File)).

(Joies du refactoring et merci et chapeau au prolifique Dobro/Spock/Zorro qui a nourri les forums PB de tonnes de codes abondamment commentés 8) C'est très correct d'avoir laissé la citation)
Par ailleurs j'ai été ennuyé avec certains caractères qui s'affichent mal sur l'afficheur.
Si tu as des exemples, on peut regarder ce qu'il est possible de faire (entre ASCII, UTF-8, encodage HTML on a parfois des nouvelles méthodes simples depuis la v5.60)

:wink:
mongis
Messages : 9
Inscription : jeu. 15/nov./2018 13:36

Re: Petit utilitaire

Message par mongis »

Bonjour,
Je sait pas si la fonction truncat est la bonne car ce petit exe sert a écrire un petit fichier texte pour 'nourrir' un encodeur RDS via un logiciel dédier a l'encodeur (donc je ne maitrise pas le fonctionnement de l'encodeur) le seul truc c'est que ce soft rafraichi les données a envoyer a l'encodeur RDS quand le ficher texte est ré-ecrit (donc je pense qu'il faut changer la date du fichier je suppose ).

Donc pour mémoire les fonctions que remplissez ce petit code sont:

-Écriture des données dans "info.txt"

interprète
Album
titre

-Affichage des données dans une fenêtre pour vérifier le fonctionnement de l'encodeur.

Merci encore pour votre aide.
Cordialement.
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: Petit utilitaire

Message par Marc56 »

Voila la version "expressions régulières" oui, j'aime ça 8)
Très fouillis, mais surtout pour montrer quelques possibilités de PB
À optimiser, par exemple: Ne pas réécrire le fichier si les donnés ne changent pas.

:idea: Pour gagner du temps on pourrait ne charger que l'entête HTML et vérifier si la date a changée depuis le dernier loadfile

Code : Tout sélectionner

EnableExplicit

InitNetwork()

Enumeration
    #Window
    #editor
    #timer
    #File_Tmp
    #File_Out
    #RegEx
EndEnumeration

Global Tmp_FileName$ = GetTemporaryDirectory() + "SmoothJazz.txt"
Global Source_Page$, Artist$, Title$, Song$

Define RegEx$ = ~"SmoothJazz Now Playing.+class=\"artist-name\">(.+)</span>.+class=\"album-title\">(.+)</span>.+class=\"song-title\">(.+)</span>.+<div class=\"open-close-shop\">"

If CreateRegularExpression(#RegEx, RegEx$, #PB_RegularExpression_DotAll)
    Debug "Regex OK"
Else
    Debug "Regex KO"
    End
EndIf


Procedure Find_Infos()
    If ExamineRegularExpression(#RegEx, Source_Page$)
        While NextRegularExpressionMatch(#RegEx)
            Artist$ = RegularExpressionGroup(#RegEx, 1)
            Title$  = RegularExpressionGroup(#RegEx, 2)
            Song$   = RegularExpressionGroup(#RegEx, 3)
        Wend    
    Else 
        Debug "Rien"
    EndIf
EndProcedure


Procedure Load_From_Disk()
    ReadFile(#File_Tmp, Tmp_FileName$)
    While Not Eof(#File_Tmp)
        Source_Page$ = ReadString(#File_Tmp, #PB_File_IgnoreEOL)
    Wend    
    CloseFile(#File_Tmp)
EndProcedure


Procedure Load_From_Net()
    If Not ReceiveHTTPFile("http://www.smoothjazz.com", Tmp_FileName$)
        Debug "KO - Pas de connexion au site"
        End
    Else
        Debug "Fichier chargé"
        Load_From_Disk()
    EndIf
EndProcedure


Procedure Write_File()
    Protected File_Out$ = "info.txt"
    If FileSize(File_Out$) >= 0 : DeleteFile(File_Out$) : EndIf
    If OpenFile(#File_Out, File_Out$)
        WriteString(#File_Out, Artist$ + " - ")
        WriteString(#File_Out, Title$)
        CloseFile(#File_Out)
    EndIf
EndProcedure

OpenWindow(#window,10,10,320,100,"Now Playing...",#PB_Window_SystemMenu )
EditorGadget(#editor,10,10,300,80)
AddWindowTimer(#window, #timer, 10000)

Load_From_Net()
Find_Infos()
SetGadgetText(#editor, Artist$ + " - " + Title$ + " - " + Song$)
Write_File()

Repeat
    Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
            End
        Case #PB_Event_Timer
            Load_From_Net()
            Find_Infos()
            SetGadgetText(#editor, Artist$ + " - " + Title$ + " - " + Song$)
            Debug "artist-name  : " + Artist$
            Debug "album-title  : " + Title$
            Debug "song-title   : " + Song$
            Write_File()
    EndSelect
ForEver

FreeRegularExpression(#RegEx)

End
Pour changer la date du fichier, il suffit de l'effacer avant de le re-créer
If FileSize(File_Out$) >= 0 : DeleteFile(File_Out$) : EndIf

:wink:
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Petit utilitaire

Message par Ar-S »

Pourquoi ReceiveHTTPFile et pas ReceiveHTTPMemory ?
~~~~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 : 2148
Inscription : sam. 08/févr./2014 15:19

Re: Petit utilitaire

Message par Marc56 »

Ar-S a écrit :Pourquoi ReceiveHTTPFile et pas ReceiveHTTPMemory ?
Oui, ce serait bien mieux, mais après 37 ans de programmation, j'ai toujours une certaine appréhension avec l'utilisation des pointeurs :P Vieux souvenirs d'avec mon 286 et de mes débuts en Turbo Pascal où avec une mauvaise utilisation des pointeurs, j'ai plusieurs fois remis le BIOS de mon PC en configuration d'usine par un mauvais adressage mémoire (= voit plus le disque dur par exemple). :o Il faut dire que le DOS n'avait pas toutes les protections de zone mémoire qu'on a maintenant les OS modernes. :|
Mais je vais m'y mettre, promis, m'sieu' :mrgreen: Je fais déjà quelque Peek depuis 6 mois, je vais tenter un Poke :)
:wink:

Edit. Voilà pour Mongis la modification pour la version ReceiveHTTPMemory
(remplacer les deux procédures par une seule)

Code : Tout sélectionner

;{ OLD
; Procedure Load_From_Disk()
;     ReadFile(#File_Tmp, Tmp_FileName$)
;     While Not Eof(#File_Tmp)
;         Source_Page$ = ReadString(#File_Tmp, #PB_File_IgnoreEOL)
;     Wend    
;     CloseFile(#File_Tmp)
; EndProcedure
; 
; 
; Procedure Load_From_Net()
;     If Not ReceiveHTTPFile("http://www.smoothjazz.com", Tmp_FileName$)
;         Debug "KO - Pas de connexion au site"
;         End
;     Else
;         Debug "Fichier chargé"
;         Load_From_Disk()
;     EndIf
; EndProcedure
;}

; NEW
Procedure Load_From_Net()
    Protected URL$ = "http://www.smoothjazz.com"
    Protected *Buffer = ReceiveHTTPMemory(URL$)
    If *Buffer 
        Protected Size_Buffer = MemorySize(*Buffer)
        Source_Page$ = PeekS(*Buffer, Size_Buffer, #PB_UTF8|#PB_ByteLength)
    Else 
        SetGadgetText(#editor, "Erreur de chargement du fichier source")
    EndIf        
EndProcedure
Reste à faire quelque-chose pour les caractères bizarres, qui sont en fait un encodage html
L’apostrophe (') est devenu (')
J'ai essayé avec URLDecoder() mais cela ne fonctionne pas dans ce cas.
Je pense qu'on pourrait le faire avec une table de hash car tous les cars encodés en html sont &(lettres);
mongis
Messages : 9
Inscription : jeu. 15/nov./2018 13:36

Re: Petit utilitaire

Message par mongis »

Bonjour
Merci du coup de main, oui c'est précisément l'apostrophe entre autre qui sembler poser problème
sur l'afficheur.

Chose bizarre l'artiste et l'album et le tire sont bien écrit dans la fenêtre mais pas dans le fichier "info.txt"?
il n'y a que l'artiste et l'album!

ex

Fichier
Peabo Bryson - Stand For Love

fenêtre
Peabo Bryson - Stand For Love - Looking For Sade feat Boney James

Encore merci.
Cordialement.
mongis
Messages : 9
Inscription : jeu. 15/nov./2018 13:36

Re: Petit utilitaire

Message par mongis »

Re
OK maintenant ça fonctionne mais en effet il y a les caractères bizarres qui ne passeront pas sur l'encodeur!

ex:
Gregory Goodloe - Get'n It - Get'n It

Code : Tout sélectionner

EnableExplicit

InitNetwork()

Enumeration
    #Window
    #editor
    #timer
    #File_Tmp
    #File_Out
    #RegEx
EndEnumeration

Global Tmp_FileName$ = GetTemporaryDirectory() + "SmoothJazz.txt"
Global Source_Page$, Artist$, Title$, Song$

Define RegEx$ = ~"SmoothJazz Now Playing.+class=\"artist-name\">(.+)</span>.+class=\"album-title\">(.+)</span>.+class=\"song-title\">(.+)</span>.+<div class=\"open-close-shop\">"

If CreateRegularExpression(#RegEx, RegEx$, #PB_RegularExpression_DotAll)
    Debug "Regex OK"
Else
    Debug "Regex KO"
    End
EndIf


Procedure Find_Infos()
    If ExamineRegularExpression(#RegEx, Source_Page$)
        While NextRegularExpressionMatch(#RegEx)
            Artist$ = RegularExpressionGroup(#RegEx, 1)
            Title$  = RegularExpressionGroup(#RegEx, 2)
            Song$   = RegularExpressionGroup(#RegEx, 3)
        Wend   
    Else
        Debug "Rien"
    EndIf
EndProcedure

Procedure Load_From_Net()
    Protected URL$ = "http://www.smoothjazz.com"
    Protected *Buffer = ReceiveHTTPMemory(URL$)
    If *Buffer
        Protected Size_Buffer = MemorySize(*Buffer)
        Source_Page$ = PeekS(*Buffer, Size_Buffer, #PB_UTF8|#PB_ByteLength)
    Else
        SetGadgetText(#editor, "Erreur de chargement du fichier source")
    EndIf       
EndProcedure

Procedure Write_File()
    Protected File_Out$ = "info.txt"
    If FileSize(File_Out$) >= 0 : DeleteFile(File_Out$) : EndIf
    If OpenFile(#File_Out, File_Out$)
        WriteString(#File_Out, Artist$ + " - ")
        WriteString(#File_Out, Title$ + " - ")
        WriteString(#File_Out, Song$)
        CloseFile(#File_Out)
    EndIf
EndProcedure

OpenWindow(#window,10,10,320,100,"Now Playing...",#PB_Window_SystemMenu )
EditorGadget(#editor,10,10,300,80)
AddWindowTimer(#window, #timer, 10000)

Load_From_Net()
Find_Infos()
SetGadgetText(#editor, Artist$ + " - " + Title$ + " - " + Song$)
Write_File()

Repeat
    Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
            End
        Case #PB_Event_Timer
            Load_From_Net()
            Find_Infos()
            SetGadgetText(#editor, Artist$ + " - " + Title$ + " - " + Song$)
            Debug "artist-name  : " + Artist$
            Debug "album-title  : " + Title$
            Debug "song-title   : " + Song$
            Write_File()
    EndSelect
ForEver

FreeRegularExpression(#RegEx)

End
Le filtre de Dobro fonctionner plutôt bien avec l'ancien code:

Code : Tout sélectionner

   ; By Dobro
   ; autre exemple de filtre qui a l'avantage que nous voyons directement les caracteres que nous désirons garder , il suffit de les ajouter dans la chaine Ref.s
   ref.s="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-()[].' " ; << derniere caractere est un espace
   For i=1 To Len(var.s)
      ex.s=Mid(var.s,i,1)
      If FindString(ref.s,ex.s)>0
         sort.s=sort.s+ex.s
      EndIf
   Next i
   ProcedureReturn Sort.s
EndProcedure
Merci.
Cordialement.
Dernière modification par mongis le sam. 17/nov./2018 20:08, modifié 2 fois.
mongis
Messages : 9
Inscription : jeu. 15/nov./2018 13:36

Re: Petit utilitaire

Message par mongis »

J'ai oublier
Le code est il susceptible de fonctionner sur un Windows Xp?
Car la version de PB est 64bits non?

Merci de vos éclaircissements.

Cordialement.
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Petit utilitaire

Message par Ollivier »

Dans ton espace personnel, tu as tous les compilateurs qu'il te faut. Et ça fonctionne sur XP. Si ça ne fonctionne pas, au cas où, tu télécharges une version LTS 32 bits plus ancienne mais ça ne devrait pas être trop ancien. V5.40, c'est toujours valable.
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: Petit utilitaire

Message par Marc56 »

mongis a écrit :Le code est il susceptible de fonctionner sur un Windows Xp?
Car la version de PB est 64bits non?
Les deux.
Tu as droit à toutes les versions avec la même licence.
Oui, tu peux installer la version 32 bits de PB sur un OS 64
Si tu installe les deux versions sur le même PC 64 bits elles s'installeront dans deux répertoires différents automatiquement
Si tu le compile avec la version 64 bits de PB il fonctionnera sur un OS 64 bits uniquement
Si tu le compile avec la version 32 bits de PB il fonctionnera sur un OS 32 et 64 bits
et enfin, oui, si les deux compilateurs sont installés sur le même poste, tu peux compiler deux versions en même temps avec l'un ou l'autre en utilisant le gestionnaire de projets.
mongis
Messages : 9
Inscription : jeu. 15/nov./2018 13:36

Re: Petit utilitaire

Message par mongis »

Merci pour les infos,
Par contre pour le filtre j'arrive a rien ça fonctionne pas j'ai toujours des caractères bizarres issu de la page html
qui me pose problème sur l’afficheur.

Merci de votre aide.

Cordialement.
Répondre