|
GMib |
Voici une UDF pour utiliser l'API BDFCI dans AutoIt :
PORTION DE CODE :
#include-once
#include <INet.au3>
#include <String.au3>
Const $ApiKey = 'Mettez votre Clé api ici'
; #FUNCTION# ====================================================================================================================
; Name...........: _RechFilm
; Description ...: Recherche un film avec l'api BDFCI et retourne les infos dans un tableau
; Syntax.........: _RechFilm("String")
; Return values .: Success - Retourne un tableau contenant les films trouvés et ses infos
; Le tableau retourné est a 2 dimensions :
; $array[0][0] = Nombre de films retourné
; $array[1][0] = ID du 1er film
; $array[1][1] = Titre du 1er film
; $array[1][2] = Année du 1er film
; $array[1][3] = Synopsis du 1er film
; $array[1][4] = Affichette du 1er film
; ...
; $array[n][0] = ID du n ieme film
; $array[n][1] = Titre du n ieme film
; Etc...
; Failure - Retourne -1 si aucun film trouvé
; ===============================================================================================================================
Func _RechFilm($film)
$rech = StringReplace($film, " ", "+")
$source = _INetGetSource('http://www.bdfci.info/apis/request.php5?key=' & $ApiKey & '&ask=' & $rech & '&results=10&sort=ANNEE&order=DSC')
$nbr_film = _SBbdfci($source,'ResultatsRetournes="','"')
Local $aFilm[$nbr_film+1][1]
If $nbr_film = 0 Then
Return -1
Else
$result = _StringBetween($source,'<result>','</result>')
$aa = UBound($result)+1
Local $inffilm[$aa][5]
$inffilm[0][0] = UBound($result)
For $i = 1 To UBound($result)
$inffilm[$i][0] = _SBbdfci($result[$i-1],'<idfilm>','</idfilm>')
$inffilm[$i][1] = _SBbdfci($result[$i-1],'<titre>','</titre>')
$inffilm[$i][2] = _SBbdfci($result[$i-1],'<annee>','</annee>')
$inffilm[$i][3] = _SBbdfci($result[$i-1],'<synopsis>','</synopsis>')
$inffilm[$i][4] = _SBbdfci($result[$i-1],'<affichette>','</affichette>')
Next
EndIf
Return $inffilm
EndFunc
Func _Rechinfos($id) ; retourne l'objet à donné en parametre aux fonctions suivantes
$source = _INetGetSource('http://apis.bdfci.info/film.php5?key=' & $ApiKey & '&id='&$id)
Return $source
EndFunc
Func _Cover($source) ; retourne l'url de l'affiche ou -1 si aucune affiche
If StringInStr($source,"<cover>") Then
Return _SBbdfci($source,'<cover>','</cover>')
Else
Return -1
EndIf
EndFunc
Func _Titre($source,$lang = "fr") ;retourne le titre fr ou vo, -2 si $lang n'est pas "vf" ou "vo" ou -1 si aucun titre
If $lang <> "fr" And $lang <> "vo" Then Return -2
If StringInStr($source,'<'&$lang&'></'&$lang&'>') Then Return -1
Return _SBbdfci($source,'<'&$lang&'>','</'&$lang&'>')
EndFunc
Func _Origines($source) ; retourne les origines dans un tableau de base 0 ou -1 si aucune origine
If StringInStr($source,'<origines></origines>') Then Return -1
$aaa = _StringBetween(_SBbdfci($source,'<origines>','</origines>'),'">','</origine>')
Return $aaa
EndFunc
Func _Genres($source); retourne les genres dans un tableau de base 0 ou -1 si aucun genre
If StringInStr($source,'<genres></genres>') Then Return -1
$aaa = _StringBetween(_SBbdfci($source,'<genres>','</genres>'),'">','</genre>')
Return $aaa
EndFunc
Func _Annee($source) ;retourne l'année ou -1 si aucune année
If StringInStr($source,'<annee></annee>') Then Return -1
Return _SBbdfci($source,'<annee>','</annee>')
EndFunc
Func _Sortie($source) ;retourne la date de sortie ou - 1 si aucune date
If StringInStr($source,'<sortie></sortie>') Then Return -1
Return _SBbdfci($source,'<sortie>','</sortie>')
EndFunc
Func _Reprise($source) ;retourne la date de reprise ou - 1 si aucune date
If StringInStr($source,'<reprise></reprise>') Then Return -1
Return _SBbdfci($source,'<reprise>','</reprise>')
EndFunc
Func _Pellicule($source) ; retourne la couleur de la pellicule ou -1 si non renseigné
If StringInStr($source,'<pellicule></pellicule>') Then Return -1
Return _SBbdfci($source,'<pellicule>','</pellicule>')
EndFunc
Func _Synopsis($source) ; retourne le synopsis ou -1 si non renseigné
If StringInStr($source,'<synopsis></synopsis>') Then Return -1
Return _SBbdfci($source,'<synopsis>','</synopsis>')
EndFunc
Func _Realisateurs($source); retourne les realisteurs dans un tableau de base 0 ou -1 si aucun realisateur
If StringInStr($source,'<realisateurs></realisateurs>') Then Return -1
$aaa = _StringBetween(_SBbdfci($source,'<realisateurs>','</realisateurs>'),'">','</realisateur>')
Return $aaa
EndFunc
Func _Acteurs($source); retourne les acteurs dans un tableau de base 0 à 2 dimensions ou -1 si aucun acteur
If StringInStr($source,'<acteurs></acteurs>') Then Return -1
$aaa = _StringBetween($source,'<acteur id','</acteur>')
Local $act[UBound($aaa)][2]
For $i = 0 To UBound($aaa)-1
$act[$i][0] = _SBbdfci($aaa[$i],'">','')
$act[$i][1] = _SBbdfci($aaa[$i],'role="','">')
Next
Return $act
EndFunc
Func _SBbdfci($sString, $sStart, $sEnd,$no = 1)
$a = _StringBetween($sString,$sStart,$sEnd)
If $a <> 0 Then
Return $a[$no-1]
Else
Return ""
EndIf
EndFunc
|
Exemple d'utilisation :
PORTION DE CODE :
#include "BDFCI_API.au3"
#include <Array.au3>
$Rfilm = _RechFilm("spider-man") ; recherche les films
_ArrayDisplay($Rfilm,"Liste des films trouvés")
$id = $Rfilm[1][0] ; enregistre l'id du 1er film
$infos = _Rechinfos($id) ; selectionne le 1er film
MsgBox(0, 'Url de l''affiche', _Cover($infos))
MsgBox(0, 'Titre fr', _Titre($infos,'fr'))
MsgBox(0, 'titre vo', _Titre($infos,'vo'))
$origines = _Origines($infos)
_ArrayDisplay($origines,"Origines du film")
$genres = _Genres($infos)
_ArrayDisplay($genres,"Genres du film")
MsgBox(0, 'Année du film', _Annee($infos))
MsgBox(0, 'Date de sortie', _Sortie($infos))
MsgBox(0, 'Date de reprise', _Reprise($infos))
MsgBox(0, 'Couleur de la pellicule', _Pellicule($infos))
MsgBox(0, 'Synopsis du film', _Synopsis($infos))
$realisateurs = _realisateurs($infos)
_ArrayDisplay($realisateurs,"Liste des realisateurs")
$acteurs = _Acteurs($infos)
_ArrayDisplay($acteurs,"Liste des Acteurs et leur role")
|
|