[AutoIt] Exemple d'utilisation de l'api et envoi de photo d'acteur

GMiba demandé 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 
#include 
$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, '') Then ;si l'acteur na pas de photo
                                                        
                        $id = sb($source,'','') ; 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("hello","","") 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.