[AutoIt] UDF BDFCI_API

GMiba demandé le 23-01-2010 à 12:35 
Voici une UDF pour utiliser l'API BDFCI dans AutoIt :

PORTION DE CODE :
#include-once
#include 
#include 

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,'','')
                $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],'','')
                        $inffilm[$i][1] = _SBbdfci($result[$i-1],'','')
                        $inffilm[$i][2] = _SBbdfci($result[$i-1],'','')
                        $inffilm[$i][3] = _SBbdfci($result[$i-1],'','')
                        $inffilm[$i][4] = _SBbdfci($result[$i-1],'','')
                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,"") Then
                Return _SBbdfci($source,'','')
        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&'>') Then Return -1
        Return _SBbdfci($source,'<'&$lang&'>','')
EndFunc

Func _Origines($source) ; retourne les origines dans un tableau de base 0 ou -1 si aucune origine
        If StringInStr($source,'') Then Return -1
        $aaa = _StringBetween(_SBbdfci($source,'',''),'">','')
        Return $aaa
EndFunc

Func _Genres($source); retourne les genres dans un tableau de base 0 ou -1 si aucun genre
        If StringInStr($source,'') Then Return -1
        $aaa = _StringBetween(_SBbdfci($source,'',''),'">','')
        Return $aaa
EndFunc

Func _Annee($source) ;retourne l'année ou -1 si aucune année
        If StringInStr($source,'') Then Return -1
        Return _SBbdfci($source,'','')
EndFunc

Func _Sortie($source) ;retourne la date de sortie ou - 1 si aucune date
        If StringInStr($source,'') Then Return -1
        Return _SBbdfci($source,'','')
EndFunc

Func _Reprise($source) ;retourne la date de reprise ou - 1 si aucune date
        If StringInStr($source,'') Then Return -1
        Return _SBbdfci($source,'','')
EndFunc

Func _Pellicule($source) ; retourne la couleur de la pellicule ou -1 si non renseigné
        If StringInStr($source,'') Then Return -1
        Return _SBbdfci($source,'','')
EndFunc

Func _Synopsis($source) ; retourne le synopsis ou -1 si non renseigné
        If StringInStr($source,'') Then Return -1
        Return _SBbdfci($source,'','')
EndFunc

Func _Realisateurs($source); retourne les realisteurs dans un tableau de base 0 ou -1 si aucun realisateur
        If StringInStr($source,'') Then Return -1
        $aaa = _StringBetween(_SBbdfci($source,'',''),'">','')
        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,'') Then Return -1
        $aaa = _StringBetween($source,'')
        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 

$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")
lenonoa répondu le 23-01-2010 à 20:47 
C'est efficace !
Pour télécharger Autoit, rendez vous sur cette page :
http://www.autoitscript.com/autoit3/

Bien qu'en anglais la doc a l'air assez complète.

Merci à GMib pour ses sources, et du bon usage des APIS !

lenono
thepiafa répondu le 25-01-2010 à 13:49 
Bonjour,

J'utilise AutoIt depuis un certain moment au boulot, et il m'a fait gagner de nombreuses heures .
Je tiens à préciser qu'il existe un forum français pour ce logiciel : http://www.autoitscript.fr/forum/ et qu'une version française du logiciel est disponible ici : http://www.autoitscript.fr/forum/viewtopic.php?f=3&t=2573
En espérant que ca vous aidera.
Bonne Journée.
ThePiaf