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] Exemple d'utilisation de l'api et envoi de photo d'acteur
Auteur  Sujet : [AutoIt] Exemple d'utilisation de l'api et envoi de photo d'acteur
GMib
Posté le 23-01-2010 à 00:47 
Bonjour, j'ai crée ce script pour envoyer sur bdfci les photos d'acteurs qui sont stocké sur mon ordi.
les photos sont dans C:\Apps\!vidz\actors\ et sont toutes nommé avec le nom de l'acteur (nom de l'acteur.jpg)
ce script ouvre une fenêtre internet explorer, s'identifie sur bdfci et va ensuite pour chaque fichier dans C:\Apps\!vidz\actors\ rechercher avec l'api bdfci si l'acteur existe, si la recherche ne retourne qu'un resultat et si il na pas dejas de photo. si c'est le cas alors il soumet la photo a bdfci.


PORTION DE CODE :
#include <IE.au3>
#include <INet.au3>
$oIE = _IECreate ("http://www.bdfci.info/connexion/") ;Ouvre une fenetre ie sur la page de login
$oForm = _IEFormGetCollection ($oIE, 1) ; cherche le 2eme formulaire de la page
$oText = _IEFormElementGetObjByName ($oForm, "pseudo") ; cherche l'élément "pseudo" du formulaire
$opass = _IEFormElementGetObjByName ($oForm, "pass") ; cherche l'élément "pass" du formulaire
_IEFormElementSetValue ($oText, "Login") ; insere le login dans l'input
_IEFormElementSetValue ($opass, "MotdePasse") ; insere le pass dans l'input
_IEFormSubmit ($oForm) ; Valide le formulaire

$search = FileFindFirstFile("C:\Apps\!vidz\actors\*.jpg") ;lance la recherche de fichier 
While 1
    $file = FileFindNextFile($search) 
    If @error Then ExitLoop
    $acteur = StringReplace($file, " ", "+") ;remplace les espaces par +
    $acteur = StringTrimRight($file,4) ;supprime l'extension
      $source = _INetGetSource('http://www.bdfci.info/apis/request.php5?key=(Votre API KEY)&ask=' & $acteur & '&results=10&sort=NOM&order=ASC&searchtype=p&exact=yes') ; recupere la source de  l'api recherche d'acteur
    If StringInStr($source, 'ResultatTotal="1"') Then ; si 1 seul resultat retourné par l'api
        
        If StringInStr($source, '<photo></photo>') Then ;si l'acteur na pas de photo
                            
            $id = sb($source,'<idpersonne>','</idpersonne>') ; recuperation de l'id de l'acteur
            _IENavigate ($oIE, "http://www.bdfci.info/V4/maj.php?t=1&a="&$id) ; ouvre la page de mise a jour de l'acteur
            $oForm = _IEFormGetCollection ($oIE, 0) ; Recherche le premier formulaire
            $oT = _IEFormElementGetObjByName ($oForm, "fichier") ; Recherche de l'element "fichier"
            MouseMove (_IEPropertyGet ($oT, "screenx") + _IEPropertyGet ($oT, "width") - 10, _IEPropertyGet ($oT, "screeny") + _IEPropertyGet ($oT, "height") / 2,0) ; deplace la souris sur l'input file
            MouseClick ("left")
            WinWait ("Choisir un fichier") ; attent la fenetre de séléction de fichier
            $hChoose = WinGetHandle ("Choisir un fichier") 
            ControlSetText ($hChoose, "", "Edit1", "C:\Apps\!vidz\actors\"&$file) ;met le chemin vers le fichier img de l'acteur dans l'edit de la fenetre de séléction de fichier
            Sleep(500) ; Attente de 0.5s
            ControlClick ($hChoose, "", "Button2")
            Sleep(500)
            _IEFormSubmit ($oForm) ; Envoi le formulaire
            
        EndIf
EndIf
WEnd

; Close the search handle
FileClose($search)

Func SB($sString, $sStart, $sEnd,$no = 1) ; recherche le $no eme texte entre $sStart et $sEnd (ex: sb("<b>hello</b>","<b>","</b>") retourne "hello")
        Local $sHold = '', $sSnSStart = '', $sSnSEnd = ''
        While StringLen($sString) > 0
            $sSnSStart = StringInStr($sString, $sStart)
            If Not $sSnSStart Then ExitLoop
            $sString = StringTrimLeft($sString, ($sSnSStart + StringLen($sStart)) - 1)
            $sSnSEnd = StringInStr($sString, $sEnd)
            If Not $sSnSEnd Then ExitLoop
            $sHold &= StringLeft($sString, $sSnSEnd - 1) & Chr(1)
            $sString = StringTrimLeft($sString, $sSnSEnd)
        WEnd
        If Not $sHold Then Return SetError(1, 0, 0)
        $sHold = StringSplit(StringTrimRight($sHold, 1), Chr(1))
        Return $sHold[$no]
    
EndFunc


A modifier suivant vos besoins.

Aller à :