Toutes les données récupérables à l'aide de cette API ne sont pas forcément gérées.
Ce n'est qu'une base (j'ai une version plus complexe intégrée dans un gestionnaire de base de données de vidéos).
Pour pouvoir l'utiliser, il vous faut obtenir une clé API auprès du site.
Si cela vous intéresse, c'est par ici et c'est gratuit !
Une fois votre clé obtenue, il vous suffira de modifier la valeur de la constante #CLETMDB du source.
N'hésitez pas à me faire part de vos remarques et/ou possibilités d'améliorations/optimisations.
Code : Tout sélectionner
EnableExplicit
; ╔═════════════════════════════════════════════════════════════════════════════╗
; ║ STRUCTURES - ENUMERATIONS - CONSTANTES - MACROS - MAPS - VARIABLES GLOBALES ║
; ╚═════════════════════════════════════════════════════════════════════════════╝
;{ ════ PLUGINS ════
;- ════ PLUGINS
UseJPEGImageDecoder()
;}
;{ ════ STRUCTURES ════
;- ════ STRUCTURES ════
Structure JSONTMDB_GENRE ;{
id.l
name.s
EndStructure ;}
Structure JSONTMDB_GENRES ;{
List genres.JSONTMDB_GENRE()
EndStructure ;}
Structure JSONTMDB_FILM ;{
vote_average.l
overview.s
release_date.s
original_language.s
original_title.s
backdrop_path.s
popularity.f
poster_path.s
title.s
vote_count.l
adult.s
video.s
id.q
List genre_ids.l()
EndStructure ;}
Structure JSONTMDB_FILMS ;{
total_results.l
total_pages.l
page.l
List results.JSONTMDB_FILM()
EndStructure ;}
Structure JSONTMDB_AFFICHE ;{
aspect_ratio.d
height.u
vote_average.d
file_path.s
iso_639_1.s
width.u
vote_count.w
EndStructure ;}
Structure JSONTMDB_AFFICHES ;{
List posters.JSONTMDB_AFFICHE()
EndStructure ;}
Structure DONNEEAFFICHE
Nom.s
Dimensions.s
EndStructure
Structure FILMTMDB
IDTMDB.i
Titre.s
TitreOrig.s
Annee.s
Genre.s
Synopsis.s
Miniature.a
List Affiches.DONNEEAFFICHE()
EndStructure
;}
;{ ════ ENUMERATIONS ════
;- ════ ENUMERATIONS ════
Runtime Enumeration Fenetres ;{
#FEN_RECHERCHETMDB
EndEnumeration ;}
Runtime Enumeration Gadgets ;{
#GAD_LIB_TITRERECHERCHE
#GAD_CP_TITRERECHERCHE
#GAD_BT_RECHERCHER
#GAD_LIB_MOTNBITEMS
#GAD_LIB_NBITEMS
#GAD_LS_TITRESTMDB
#GAD_BT_OUVRIRLIENINTERNET
#GAD_BG_DONNEES
#GAD_LIB_IDTMDB
#GAD_CP_IDTMDB
#GAD_LIB_TITRETMDB
#GAD_CP_TITRETMDB
#GAD_LIB_TITREORIGTMDB
#GAD_CP_TITREORIGTMDB
#GAD_LIB_ANNEETMDB
#GAD_CP_ANNEETMDB
#GAD_LIB_GENRETMDB
#GAD_CP_GENRETMDB
#GAD_LIB_SYNOPSISTMDB
#GAD_ED_SYNOPSISTMDB
#GAD_IMG_AFFICHETMDB
#GAD_LIB_DIMENSIONSAFFICHE
#GAD_BT_AFFICHETMDBPRECEDENTE
#GAD_CP_NOAFFICHE
#GAD_BT_AFFICHETMDBSUIVANTE
#GAD_BT_CHARGERAFFICHE
#GAD_BT_QUITTER
EndEnumeration ;}
Enumeration MenusRaccourcis 500 ;{
#RACCOURCI_QUITTER ; Échap
EndEnumeration ;}
Enumeration XML ;{
#TMDB_XML
EndEnumeration ;}
Enumeration DialoguesXML ;{
#XML_FENPRINCIPALE
EndEnumeration ;}
Enumeration JSON ;{
#TMDB_JSON
#TMDB_JSONAFFICHE
EndEnumeration ;}
Enumeration Images ;{
#IMG_AFFICHE
EndEnumeration ;}
Enumeration Fichiers ;{
#FIC_IMAGE
EndEnumeration ;}
;}
;{ ════ CONSTANTES ════
;- ════ CONSTANTES ════
#CLETMDB=""
;#CLETMDB=""
CompilerIf #CLETMDB=""
CompilerError "Vous devez définir votre clé TMDB !"
End
CompilerEndIf
#LANGAGETMDB="&language=fr"
#TAILLEAFFICHE="185" ; Valeurs possibles : 92, 154, 185, 342, 500, 780 (ou "original" mais ne pas utiliser ce dernier dans ce code)
#URLTMDB_GENRES="https://api.themoviedb.org/3/genre/movie/list?api_key="+#CLETMDB+#LANGAGETMDB
#URLTMDB_AFFICHES="https://image.tmdb.org/t/p/"
;}
;{ ════ MACROS ════
; -════ MACROS ════
Macro Mc_FormatageXML(ArgChaine)
EscapeString(ArgChaine,#PB_String_EscapeXML)
EndMacro
Macro Mc_DeformatageXML(ArgChaine)
UnescapeString(ArgChaine,#PB_String_EscapeXML)
EndMacro
Macro Mc_RemplacementChaineS(ArgChaine,ArgChaineRemplacement)
ReplaceString(ArgChaine,"%s",ArgChaineRemplacement)
EndMacro
;}
;{ ════ MAPS ════
;- ════ MAPS ════
Global NewMap GenresTMDB.s()
;}
;{ ════ LISTES ════
;- ════ LISTES ════
Global NewList FilmsTMDB.FILMTMDB()
;}
;{ ════ VARIABLES GLOBALES ════
;- ════ VARIABLES GLOBALES ════
;}
; ╔═════════════════════════════════════════╗
; ║ DECLARATIONS - FICHIERS INCLUS - IMAGES ║
; ╚═════════════════════════════════════════╝
;{ ════ DECLARATIONS ════
;- ════ DECLARATIONS ════
;}
;{ ════ FICHIERS INCLUS ════
;- ════ FICHIERS INCLUS ════
;}
;{ ════ IMAGES ════
;- ════ IMAGES ════
;}
;-══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
; ╔════════════╗
; ║ PROCEDURES ║
; ╚════════════╝
Procedure Pc_TMDB_RecuperationGenres()
Protected *RetourTMDB
Protected.JSONTMDB_GENRES Genres
Protected.i IDJSON
Protected.s Chaine
Protected NewList ListeGenres.s()
*RetourTMDB=ReceiveHTTPMemory(#URLTMDB_GENRES)
If *RetourTMDB
IDJSON=CatchJSON(#TMDB_JSON,*RetourTMDB,MemorySize(*RetourTMDB))
If IDJSON
ExtractJSONStructure(JSONValue(#TMDB_JSON),@Genres,JSONTMDB_GENRES)
With Genres
ForEach \Genres()
GenresTMDB(Str(\Genres()\id))=\Genres()\name
Next
EndWith
FreeJSON(#TMDB_JSON)
EndIf
FreeMemory(*RetourTMDB)
EndIf
EndProcedure
Procedure Pc_TMDB_OuvertureLienInternetFilm()
Protected.u NoItem=GetGadgetState(#GAD_LS_TITRESTMDB)
If NoItem>=0
SelectElement(FilmsTMDB(),NoItem)
RunProgram("https://www.themoviedb.org/movie/"+FilmsTMDB()\IDTMDB)
EndIf
EndProcedure
Procedure Pc_TMDB_ChargementAffiche()
Static.s AncDossier
Protected *TamponAffiche
Protected.q NbOctets
Protected.s Dossier=AncDossier,Fichier,Extension
If FilmsTMDB()\Affiches()
If FileSize(AncDossier)<>-2
Dossier=GetUserDirectory(#PB_Directory_Pictures)
EndIf
Extension=GetExtensionPart(FilmsTMDB()\Affiches()\Nom)
Fichier=SaveFileRequester("Sauvegarde de l'affiche",Dossier+FilmsTMDB()\Titre+"-"+FilmsTMDB()\Affiches()\Dimensions+"."+Extension,"Fichiers "+Extension,0)
If Fichier="":ProcedureReturn:EndIf
If FileSize(Fichier)>=0
If MessageRequester("Sauvegarde d'affiche",UnescapeString("Le fichier existe déjà !\n\nLe remplacer ?"),#PB_MessageRequester_YesNo)=#PB_MessageRequester_No:ProcedureReturn:EndIf
EndIf
AncDossier=GetPathPart(Fichier)
If Not CreateFile(#FIC_IMAGE,Fichier)
MessageRequester("Sauvegarde d'affiche","Le fichier n'a pu être créé !",#PB_MessageRequester_Error)
ProcedureReturn
EndIf
*TamponAffiche=ReceiveHTTPMemory(#URLTMDB_AFFICHES+"original/"+FilmsTMDB()\Affiches()\Nom)
If *TamponAffiche
NbOctets=WriteData(#FIC_IMAGE,*TamponAffiche,MemorySize(*TamponAffiche))
FreeMemory(*TamponAffiche)
Else
MessageRequester("Sauvegarde d'affiche","Le chargement de l'affiche a échoué !",#PB_MessageRequester_Error)
EndIf
CloseFile(#FIC_IMAGE)
EndIf
EndProcedure
Procedure Pc_TMDB_RechercheDonneesPageFilm(ArgTitre.s,ArgNoPage.u=0)
Protected *RetourTMDB,*RetourTMDBAffiches
Protected.JSONTMDB_FILMS DonneesPagesTMDB
Protected.JSONTMDB_AFFICHES DonneesAffichesTMDB
Protected.i IDJSON,IDJSONAffiches
Protected.u NbPagesTMDB,NoPageTMDB
Protected.s NoPage,AffichePrincipale
If ArgNoPage>0
NoPage="&page="+Str(ArgNoPage)
EndIf
*RetourTMDB=ReceiveHTTPMemory("https://api.themoviedb.org/3/search/movie?api_key="+#CLETMDB+"&query="+ArgTitre+#LANGAGETMDB+NoPage)
If *RetourTMDB
IDJSON=CatchJSON(#TMDB_JSON,*RetourTMDB,MemorySize(*RetourTMDB))
If IDJSON
ExtractJSONStructure(JSONValue(#TMDB_JSON),@DonneesPagesTMDB,JSONTMDB_FILMS)
NbPagesTMDB=DonneesPagesTMDB\total_pages
NoPageTMDB=DonneesPagesTMDB\page
If DonneesPagesTMDB\total_results
ForEach DonneesPagesTMDB\results()
AddElement(FilmsTMDB())
With FilmsTMDB()
\IDTMDB=DonneesPagesTMDB\results()\id
\Titre=DonneesPagesTMDB\results()\title
\TitreOrig=DonneesPagesTMDB\results()\original_title
\Annee=Left(DonneesPagesTMDB\results()\release_date,4)
\Synopsis=DonneesPagesTMDB\results()\overview
If DonneesPagesTMDB\results()\poster_path
AffichePrincipale=DonneesPagesTMDB\results()\poster_path
AddElement(\Affiches())
\Affiches()\Nom=AffichePrincipale
EndIf
; ---- Récupération URL affiches françaises
*RetourTMDBAffiches=ReceiveHTTPMemory("https://api.themoviedb.org/3/movie/"+\IDTMDB+"/images?api_key="+#CLETMDB)
If *RetourTMDBAffiches
IDJSONAffiches=CatchJSON(#TMDB_JSONAFFICHE,*RetourTMDBAffiches,MemorySize(*RetourTMDBAffiches))
If IDJSONAffiches
ExtractJSONStructure(JSONValue(#TMDB_JSONAFFICHE),@DonneesAffichesTMDB,JSONTMDB_AFFICHES)
ForEach DonneesAffichesTMDB\posters()
If DonneesAffichesTMDB\posters()\file_path=AffichePrincipale
SelectElement(\Affiches(),0)
\Affiches()\Dimensions=Str(DonneesAffichesTMDB\posters()\width)+" x "+Str(DonneesAffichesTMDB\posters()\height)
ElseIf DonneesAffichesTMDB\posters()\iso_639_1="fr"
AddElement(\Affiches())
\Affiches()\Nom=DonneesAffichesTMDB\posters()\file_path
\Affiches()\Dimensions=Str(DonneesAffichesTMDB\posters()\width)+" x "+Str(DonneesAffichesTMDB\posters()\height)
EndIf
Next
FreeJSON(#TMDB_JSONAFFICHE)
EndIf
FreeMemory(*RetourTMDBAffiches)
EndIf
; ---- Traitement genres film
ForEach DonneesPagesTMDB\results()\genre_ids()
\Genre+"|"+GenresTMDB(Str(DonneesPagesTMDB\results()\genre_ids()))
Next
\Genre=ReplaceString(LTrim(\Genre,"|"),"|"," - ")
EndWith
Next
EndIf
FreeJSON(#TMDB_JSON)
EndIf
FreeMemory(*RetourTMDB)
EndIf
If NoPageTMDB<NbPagesTMDB
Pc_TMDB_RechercheDonneesPageFilm(ArgTitre.s,NoPageTMDB+1)
EndIf
EndProcedure
Procedure Pc_TMDB_ReinitialisationGadgets(ArgMode.a=#True)
SetGadgetText(#GAD_CP_IDTMDB,"")
SetGadgetText(#GAD_CP_TITRETMDB,"")
SetGadgetText(#GAD_CP_TITREORIGTMDB,"")
SetGadgetText(#GAD_CP_ANNEETMDB,"")
SetGadgetText(#GAD_CP_GENRETMDB,"")
SetGadgetText(#GAD_ED_SYNOPSISTMDB,"")
SetGadgetText(#GAD_CP_NOAFFICHE,"")
SetGadgetText(#GAD_LIB_DIMENSIONSAFFICHE,"")
SetGadgetState(#GAD_IMG_AFFICHETMDB,0)
EndProcedure
Procedure Pc_TMDB_AffichageDonneesFilm()
Protected *TamponAffiche
Protected.l NbDonnees=ListSize(FilmsTMDB()),NoItem,NoImage
Protected.a NbAffiches
If NbDonnees>=0
NoItem=GetGadgetState(#GAD_LS_TITRESTMDB)
SelectElement(FilmsTMDB(),NoItem)
With FilmsTMDB()
NbAffiches=ListSize(\Affiches())
If NbAffiches
FirstElement(\Affiches())
*TamponAffiche=ReceiveHTTPMemory(#URLTMDB_AFFICHES+"w"+#TAILLEAFFICHE+"/"+\Affiches()\Nom)
If *TamponAffiche
If CatchImage(#IMG_AFFICHE,*TamponAffiche)
NoImage=ImageID(#IMG_AFFICHE)
EndIf
FreeMemory(*TamponAffiche)
EndIf
SetGadgetText(#GAD_CP_NOAFFICHE,"1/"+Str(NbAffiches))
SetGadgetText(#GAD_LIB_DIMENSIONSAFFICHE,\Affiches()\Dimensions)
Else
SetGadgetText(#GAD_CP_NOAFFICHE,"0")
SetGadgetText(#GAD_LIB_DIMENSIONSAFFICHE,"")
EndIf
SetGadgetText(#GAD_CP_IDTMDB,Str(\IDTMDB))
SetGadgetText(#GAD_CP_TITRETMDB,\Titre)
SetGadgetText(#GAD_CP_TITREORIGTMDB,\TitreOrig)
SetGadgetText(#GAD_CP_ANNEETMDB,\Annee)
SetGadgetText(#GAD_CP_GENRETMDB,\Genre)
SetGadgetText(#GAD_ED_SYNOPSISTMDB,\Synopsis)
EndWith
SetGadgetState(#GAD_IMG_AFFICHETMDB,NoImage)
EndIf
DisableGadget(#GAD_BT_AFFICHETMDBPRECEDENTE,#True)
DisableGadget(#GAD_BT_AFFICHETMDBSUIVANTE,Bool(NbAffiches<=1))
DisableGadget(#GAD_BT_CHARGERAFFICHE,Bool(NbAffiches=0))
EndProcedure
Procedure Pc_TMDB_RechercheDonneesFilm()
Protected.f Ratio
Protected.u NbItems
Protected.s NomFilm=GetGadgetText(#GAD_CP_TITRERECHERCHE),Chaine
If NomFilm="":ProcedureReturn:EndIf
ClearList(FilmsTMDB())
DisableWindow(#FEN_RECHERCHETMDB,#True)
Pc_TMDB_RechercheDonneesPageFilm(URLEncoder(NomFilm,#PB_UTF8))
NbItems=ListSize(FilmsTMDB())
SetGadgetText(#GAD_LIB_NBITEMS,Str(NbItems))
ClearGadgetItems(#GAD_LS_TITRESTMDB)
If NbItems
ForEach FilmsTMDB()
With FilmsTMDB()
Chaine=\Titre
If \Annee:Chaine+" ("+\Annee+")":EndIf
AddGadgetItem(#GAD_LS_TITRESTMDB,-1,Chaine)
EndWith
Next
SetGadgetState(#GAD_LS_TITRESTMDB,0)
FirstElement(FilmsTMDB())
Pc_TMDB_AffichageDonneesFilm()
Else
Pc_TMDB_ReinitialisationGadgets()
EndIf
DisableGadget(#GAD_BT_OUVRIRLIENINTERNET,Bool(NbItems=0))
DisableWindow(#FEN_RECHERCHETMDB,#False)
EndProcedure
Procedure Pc_TMDB_ChangementAffiche(ArgNoGadget.l)
Protected *TamponAffiche
Protected.l NoImage
Protected.a NbAffiches=ListSize(FilmsTMDB()\Affiches()),NoAffiche=ListIndex(FilmsTMDB()\Affiches())+1
Select ArgNoGadget
Case #GAD_BT_AFFICHETMDBPRECEDENTE
PreviousElement(FilmsTMDB()\Affiches())
NoAffiche-1
Case #GAD_BT_AFFICHETMDBSUIVANTE
NextElement(FilmsTMDB()\Affiches())
NoAffiche+1
EndSelect
SetGadgetText(#GAD_CP_NOAFFICHE,Str(NoAffiche)+"/"+Str(NbAffiches))
*TamponAffiche=ReceiveHTTPMemory(#URLTMDB_AFFICHES+"w"+#TAILLEAFFICHE+"/"+FilmsTMDB()\Affiches()\Nom)
If *TamponAffiche
If CatchImage(#IMG_AFFICHE,*TamponAffiche)
NoImage=ImageID(#IMG_AFFICHE)
EndIf
FreeMemory(*TamponAffiche)
EndIf
SetGadgetState(#GAD_IMG_AFFICHETMDB,NoImage)
SetGadgetText(#GAD_LIB_DIMENSIONSAFFICHE,FilmsTMDB()\Affiches()\Dimensions)
DisableGadget(#GAD_BT_AFFICHETMDBPRECEDENTE,Bool(NoAffiche=1))
DisableGadget(#GAD_BT_AFFICHETMDBSUIVANTE,Bool(NoAffiche=NbAffiches))
EndProcedure
;-══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
; ╔════════════════════╗
; ║ FENETRE PRINCIPALE ║
; ╚════════════════════╝
Procedure.a Fc_Fenetres_OuvertureDialogueXML(ArgArbreXML.u,ArgDialogueXML.u,ArgChaineXML.s,ArgNomFenetre.s,ArgIdFenetreParente.i=0)
Protected.i NoDialogue
Protected.a TypeErreur
Protected.s TitreMSG="Recherche TMDB",MsgErreur
If ArgChaineXML
If ParseXML(ArgArbreXML,ArgChaineXML)
If XMLStatus(ArgArbreXML)=#PB_XML_Success
If CreateDialog(ArgDialogueXML)
If ArgIdFenetreParente<>0
NoDialogue=OpenXMLDialog(ArgDialogueXML,ArgArbreXML,ArgNomFenetre,0,0,0,0,ArgIdFenetreParente)
Else
NoDialogue=OpenXMLDialog(ArgDialogueXML,ArgArbreXML,ArgNomFenetre,0,0,0,0)
EndIf
If NoDialogue
FreeXML(ArgArbreXML)
ProcedureReturn #True
Else
TypeErreur=3
EndIf
FreeDialog(ArgDialogueXML)
Else
TypeErreur=2
EndIf
FreeXML(ArgArbreXML)
Else
TypeErreur=1
MsgErreur="Erreur durant l'interprétation du dialogue XML !"
EndIf
Else
TypeErreur=1
MsgErreur="Erreur durant la lecture des données du dialogue XML !"
EndIf
EndIf
Select TypeErreur
Case 1:MsgErreur+"\n\n No erreur : "+XMLStatus(ArgArbreXML)+" - "+XMLError(ArgArbreXML)+"\n Ligne : "+Str(XMLErrorLine(ArgArbreXML))+" - Colonne : "+Str(XMLErrorPosition(ArgArbreXML))
Case 2:MsgErreur="Erreur durant la création de la fenêtre de dialogue !"
Case 3:MsgErreur="Erreur durant l'ouverture de la fenêtre de dialogue !\n\nErreur : "+DialogError(ArgDialogueXML)
EndSelect
MessageRequester(TitreMSG,UnescapeString(MsgErreur),#PB_MessageRequester_Error)
EndProcedure
Procedure Pc_FenPrincipale_GestionEvenements()
Debug #PB_Compiler_Procedure,5
Define.l Evenmt,EvenmtMenu,TypeEvenmt,NoGadget
Repeat
Evenmt=WaitWindowEvent()
TypeEvenmt=EventType()
Select Evenmt
Case #PB_Event_ActivateWindow
Case #PB_Event_Gadget
NoGadget=EventGadget()
Select TypeEvenmt
Case #PB_EventType_Change
Select NoGadget
Case #GAD_LS_TITRESTMDB:Pc_TMDB_AffichageDonneesFilm()
EndSelect
Case #PB_EventType_LeftClick
Select NoGadget
Case #GAD_BT_RECHERCHER:Pc_TMDB_RechercheDonneesFilm()
Case #GAD_BT_OUVRIRLIENINTERNET:Pc_TMDB_OuvertureLienInternetFilm()
Case #GAD_BT_AFFICHETMDBPRECEDENTE,#GAD_BT_AFFICHETMDBSUIVANTE:Pc_TMDB_ChangementAffiche(NoGadget)
Case #GAD_BT_CHARGERAFFICHE:Pc_TMDB_ChargementAffiche()
Case #GAD_BT_QUITTER:End
EndSelect
EndSelect
Case #PB_Event_CloseWindow
End
Case #PB_Event_Menu
EvenmtMenu=EventMenu()
Select EvenmtMenu
Case #RACCOURCI_QUITTER:End
EndSelect
EndSelect
ForEver
EndProcedure
Procedure Pc_FenPrincipale_Affichage()
Protected.a ValeurRetour
Protected.s ChaineXML
ChaineXML="<?xml version='1.0' encoding='UTF-16'?>"+Chr(10)+ ;{
"<dialogs>"+Chr(10)+
" <window id='"+Str(#FEN_RECHERCHETMDB)+"' name='FEN_RECHERCHETMDB' text='"+Mc_FormatageXML("Recherche Base de données TMDB (©Boddhi-2023)")+"' xpos='0' ypos='0' width='800' height='200' minwidth='auto' minheight='auto' maxheight='auto' margin='top:20,left:24,right:24,bottom:0' flags='#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_Invisible|#PB_Window_ScreenCentered'>"+Chr(10)+
" <vbox expand='no' align='top' spacing='8'>"+Chr(10)+
" <hbox expand='item:2' align='left' spacing='4'>"+Chr(10)+
" <text id='"+Str(#GAD_LIB_TITRERECHERCHE)+"' name='GAD_LIB_TITRERECHERCHE' text='"+Mc_FormatageXML("Titre : ")+"'/>"+Chr(10)+
" <string id='"+Str(#GAD_CP_TITRERECHERCHE)+"' name='GAD_CP_TITRERECHERCHE'/>"+Chr(10)+
" <button id='"+Str(#GAD_BT_RECHERCHER)+"' name='GAD_BT_RECHERCHER' text='"+Mc_FormatageXML("🔎")+"'/>"+Chr(10)+
" </hbox>"+Chr(10)+
" <empty/>"+Chr(10)+
" <hbox expand='item:4' spacing='4'>"+Chr(10)+
" <vbox expand='no' align='center' spacing='0'>"+Chr(10)+
" <text id='"+Str(#GAD_LIB_MOTNBITEMS)+"' name='GAD_LIB_MOTNBITEMS' text='"+Mc_FormatageXML("Items trouvés : ")+"'/> "+Chr(10)+
" </vbox>"+Chr(10)+
" <vbox expand='no' align='center' spacing='0'>"+Chr(10)+
" <text id='"+Str(#GAD_LIB_NBITEMS)+"' name='GAD_LIB_NBITEMS' text='"+Mc_FormatageXML("99999")+"'/> "+Chr(10)+
" </vbox>"+Chr(10)+
" <empty/>"+Chr(10)+
" <combobox id='"+Str(#GAD_LS_TITRESTMDB)+"' name='GAD_LS_TITRESTMDB'/> "+Chr(10)+
" <button id='"+Str(#GAD_BT_OUVRIRLIENINTERNET)+"' name='GAD_BT_OUVRIRLIENINTERNET' text='"+Mc_FormatageXML("🔗")+"' disabled='yes'/>"+Chr(10)+
" </hbox>"+Chr(10)+
" <singlebox height='0'/>"+Chr(10)+
" <hbox expand='item:1' spacing='16'>"+Chr(10)+
" <gridbox id='"+Str(#GAD_BG_DONNEES)+"' name='GAD_BG_DONNEES' columns='2' rowspacing='8' colexpand='item:2' rowexpand='item:6'>"+Chr(10)+
" <text id='"+Str(#GAD_LIB_IDTMDB)+"' name='GAD_LIB_IDTMDB' text='"+Mc_FormatageXML("ID TMDB : ")+"'/>"+Chr(10)+
" <hbox expand='no' spacing='0'>"+Chr(10)+
" <string id='"+Str(#GAD_CP_IDTMDB)+"' name='GAD_CP_IDTMDB' width='72' flags='#PB_String_ReadOnly'/>"+Chr(10)+
" </hbox>"+Chr(10)+
" <text id='"+Str(#GAD_LIB_TITRETMDB)+"' name='GAD_LIB_TITRETMDB' text='"+Mc_FormatageXML("Titre : ")+"'/>"+Chr(10)+
" <string id='"+Str(#GAD_CP_TITRETMDB)+"' name='GAD_CP_TITRETMDB'/>"+Chr(10)+
" <text id='"+Str(#GAD_LIB_TITREORIGTMDB)+"' name='GAD_LIB_TITREORIGTMDB' text='"+Mc_FormatageXML("Titre originel : ")+"'/>"+Chr(10)+
" <string id='"+Str(#GAD_CP_TITREORIGTMDB)+"' name='GAD_CP_TITREORIGTMDB'/>"+Chr(10)+
" <text id='"+Str(#GAD_LIB_ANNEETMDB)+"' name='GAD_LIB_ANNEETMDB' text='"+Mc_FormatageXML("Année : ")+"'/>"+Chr(10)+
" <hbox expand='no' spacing='0'>"+Chr(10)+
" <string id='"+Str(#GAD_CP_ANNEETMDB)+"' name='GAD_CP_ANNEETMDB' width='48'/>"+Chr(10)+
" </hbox>"+Chr(10)+
" <text id='"+Str(#GAD_LIB_GENRETMDB)+"' name='GAD_LIB_GENRETMDB' text='"+Mc_FormatageXML("Genre : ")+"'/>"+Chr(10)+
" <string id='"+Str(#GAD_CP_GENRETMDB)+"' name='GAD_CP_GENRETMDB'/>"+Chr(10)+
" <text id='"+Str(#GAD_LIB_SYNOPSISTMDB)+"' name='GAD_LIB_SYNOPSISTMDB' text='"+Mc_FormatageXML("Synopsis : ")+"'/>"+Chr(10)+
" <editor id='"+Str(#GAD_ED_SYNOPSISTMDB)+"' name='GAD_ED_SYNOPSISTMDB' flags='#PB_Editor_WordWrap'/>"+Chr(10)+
" </gridbox>"+Chr(10)+
" <vbox expand='no' align='' spacing='4'>"+Chr(10)+
" <image id='"+Str(#GAD_IMG_AFFICHETMDB)+"' name='GAD_IMG_AFFICHETMDB' width='"+#TAILLEAFFICHE+"' height='300'/>"+Chr(10)+
" <text id='"+Str(#GAD_LIB_DIMENSIONSAFFICHE)+"' name='GAD_LIB_DIMENSIONSAFFICHE' text=' ' flags='#PB_Text_Center'/>"+Chr(10)+
" <hbox expand='item:2' spacing='0'>"+Chr(10)+
" <button id='"+Str(#GAD_BT_AFFICHETMDBPRECEDENTE)+"' name='GAD_BT_AFFICHETMDBPRECEDENTE' text='"+Mc_FormatageXML("◀")+"' disabled='yes'/>"+Chr(10)+
" <string id='"+Str(#GAD_CP_NOAFFICHE)+"' name='GAD_CP_NOAFFICHE' disabled='yes' width='32' flags='#PB_String_Numeric|#PB_String_ReadOnly'/>"+Chr(10)+
" <button id='"+Str(#GAD_BT_AFFICHETMDBSUIVANTE)+"' name='GAD_BT_AFFICHEBTMDBPLUS' text='"+Mc_FormatageXML("▶")+"' disabled='yes'/> "+Chr(10)+
" <empty/> "+Chr(10)+
" <button id='"+Str(#GAD_BT_CHARGERAFFICHE)+"' name='GAD_BT_CHARGERAFFICHE' text='"+Mc_FormatageXML("📥")+"' disabled='yes'/> "+Chr(10)+
" </hbox> "+Chr(10)+
" </vbox> "+Chr(10)+
" </hbox>"+Chr(10)+
" <singlebox height='32'/>"+Chr(10)+
" <hbox expand='no' align='right'>"+Chr(10)+
" <button id='"+Str(#GAD_BT_QUITTER)+"' name='GAD_BT_QUITTER' text='"+Mc_FormatageXML("Quitter")+"' width='120'/> "+Chr(10)+
" </hbox>"+Chr(10)+
" <empty/> "+Chr(10)+
" </vbox> "+Chr(10)+
" </window>"+Chr(10)+
"</dialogs>" ;}
ValeurRetour=Fc_Fenetres_OuvertureDialogueXML(#TMDB_XML,#XML_FENPRINCIPALE,ChaineXML,"FEN_RECHERCHETMDB")
If ValeurRetour
SetGadgetText(#GAD_LIB_NBITEMS,"")
AddKeyboardShortcut(#FEN_RECHERCHETMDB,#PB_Shortcut_Escape,#RACCOURCI_QUITTER)
HideWindow(#FEN_RECHERCHETMDB,#False)
Pc_FenPrincipale_GestionEvenements()
EndIf
EndProcedure
;-══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
; ╔═══════════════════════╗
; ║ DÉMARRAGE APPLICATION ║
; ╚═══════════════════════╝
Pc_TMDB_RecuperationGenres()
Pc_FenPrincipale_Affichage()
End
; ══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
Note : N'hésitez pas aussi à jouer du CTRL + F4 dans l'IDE PB pour simplifier l'affichage