Lecteur de fichier xmltv ?
Publié : mer. 17/mars/2021 17:24
Bonjour a tous,
Pour compléter une application IPTV que j'ai développé avec PB, j'aimerais si c'est possible développer avec PB un lecteur de fichier xmltv (lecteur EPG)
Définitions: XMLTV et EPG
Mon application:

Les fichiers xmltv au format zip sont télécharger a partir du site XMLTV Suisse
L'un d'entre vous aurait-il des informations qui pourraient m'aider a créer un lecteur xmltv pour afficher les programmes TV.
Voici ce que peut donner un logiciel tel que Prog Guide:

Voici mon application console pour récupérer les fichiers xmltv:Merci a vous de l'aide que vous pourrez m'apporter.
cage
Pour compléter une application IPTV que j'ai développé avec PB, j'aimerais si c'est possible développer avec PB un lecteur de fichier xmltv (lecteur EPG)
Définitions: XMLTV et EPG
Mon application:

Les fichiers xmltv au format zip sont télécharger a partir du site XMLTV Suisse
L'un d'entre vous aurait-il des informations qui pourraient m'aider a créer un lecteur xmltv pour afficher les programmes TV.
Voici ce que peut donner un logiciel tel que Prog Guide:

Voici mon application console pour récupérer les fichiers xmltv:
Code : Tout sélectionner
;************************************************************************
;Titre : get-xmltv.pb
;Auteur : (C) 2021 CAGE
;Date : 2021/03/17
;Version PB : PureBasic 5.73 LTS (Windows - x86)
;Version PB : PureBasic 5.73 LTS (Windows - x64)
;Compiler Options
;Compiler Options : Executable format: Windows
;Compiler Options : Enable moderm theme support (for Windows X and above)
;Compile/Run : Create temporary executable in the source directory
;
;Libairies: aucunes
;
;https://github.com/deseven/pbsamples/tree/master/crossplatform/libcurl
;************************************************************************
;
EnableExplicit
OnErrorGoto(?ErrorHandler)
Global AppPath$ = GetPathPart(ProgramFilename())
SetCurrentDirectory(AppPath$)
Procedure.a folderExist(f$)
If FileSize(f$) = -2
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Global FolderXmltv.s = AppPath$ + "xmltv\"
If Not folderExist(FolderXmltv.s)
If Not CreateDirectory(FolderXmltv.s)
End
EndIf
EndIf
Procedure getHTTPMemory_(url.s, file.s=#Null$)
Protected Download, Progress, Size, *Buffer, Content.s
Download = ReceiveHTTPMemory(url.s, #PB_HTTP_Asynchronous)
If Download
Repeat
Progress = HTTPProgress(Download)
Select Progress
Case #PB_HTTP_Success
*Buffer = FinishHTTP(Download)
Size = MemorySize(*Buffer)
PrintN("Téléchargement terminé (taille: " + Str(Round(Size/1024,#PB_Round_Up)) + " Ko)")
;Content.s = PeekS(*Buffer, Size, #PB_UTF8)
If CreateFile(1, "test.zip")
WriteData(1, *Buffer, Size)
CloseFile(1)
EndIf
FreeMemory(*Buffer)
Break
Case #PB_HTTP_Failed
PrintN("Téléchargement en erreur")
FinishHTTP(Download)
Break
Case #PB_HTTP_Aborted
PrintN("Téléchargement intérrompu")
FinishHTTP(Download)
Break
Default
;PrintN("Current download: " + Progress)
EndSelect
Delay(500) ; Don't stole the whole CPU
ForEver
Else
PrintN("Download error")
EndIf
EndProcedure
Procedure getHTTPMemory(page.s=#Null$, file.s=#Null$)
page.s = Trim(page.s)
file.s = Trim(file.s)
If page.s = #Null$ : ProcedureReturn : EndIf
If file.s = #Null$ : ProcedureReturn : EndIf
Protected *MemoryBuffer, Size
*MemoryBuffer = ReceiveHTTPMemory(page.s)
If *MemoryBuffer
Size = MemorySize(*MemoryBuffer)
PrintN("Téléchargement terminé (taille: " + Str(Round(Size/1024,#PB_Round_Up)) + " Ko)")
If CreateFile(1, file.s)
WriteData(1, *MemoryBuffer, Size)
CloseFile(1)
EndIf
FreeMemory(*MemoryBuffer)
Else
PrintN("Téléchargement en erreur")
EndIf
EndProcedure
#site$ = "https://xmltv.ch/xmltv/"
Define Source1.s = #site$ + "xmltv-cine.zip " : Define Cible1.s = FolderXmltv.s + "xmltv-ciné+.zip"
Define Source2.s = #site$ + "xmltv-cplus.zip " : Define Cible2.s = FolderXmltv.s + "xmltv-canal+.zip"
Define Source3.s = #site$ + "xmltv-disney.zip " : Define Cible3.s = FolderXmltv.s + "xmltv-disney.zip"
Define Source4.s = #site$ + "xmltv-ch.zip " : Define Cible4.s = FolderXmltv.s + "xmltv-suisse.zip"
Define Source5.s = #site$ + "xmltv-tnt.zip " : Define Cible5.s = FolderXmltv.s + "xmltv-tnt.zip"
Define Source6.s = #site$ + "xmltv-complet.zip " : Define Cible6.s = FolderXmltv.s + "xmltv-complet.zip"
If InitNetwork()
If OpenConsole()
ConsoleTitle("Téléchargement des guides xmlTV a partir de la Suisse")
PrintN("") : Print("Téléchargement de " + Source1.s + " : ")
getHTTPMemory(Source1.s, Cible1.s)
PrintN("") : Print("Téléchargement de " + Source2.s + " : ")
getHTTPMemory(Source2.s, Cible2.s)
PrintN("") : Print("Téléchargement de " + Source3.s + " : ")
getHTTPMemory(Source3.s, Cible3.s)
PrintN("") : Print("Téléchargement de " + Source4.s + " : ")
getHTTPMemory(Source4.s, Cible4.s)
PrintN("") : Print("Téléchargement de " + Source5.s + " : ")
getHTTPMemory(Source5.s, Cible5.s)
PrintN("") : Print("Téléchargement de " + Source6.s + " : ")
getHTTPMemory(Source6.s, Cible6.s)
Delay(5000)
CloseConsole()
EndIf
EndIf
ErrorHandler:
End
cage