Base de Données Française du Cinéma sur Internet : 400.000 films, 700.000 personnalités !
 Rechercher un film, une personnalité, une société, un festival...
FILMS   PERSONNALITES   FESTIVALS  SOCIETES   FORUMS   ANNUAIRE
Vous devez être connecté pour participer aux forums !
  Forums
  Vos logiciels
  [AutoIt] UDF BDFCI_API
Auteur  Sujet : [AutoIt] UDF BDFCI_API
GMib
Posté le 23-01-2010 à 12:35 
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")
lenono
Posté 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
thepiaf
Posté 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

Aller à :