Exploiter Ziki avec WinDev

Il est possible assez simplement d'exploiter les données de Ziki via WinDev grâce à l'API mise à disposition.

L'essentiel est de bien prendre en main les fonctions de requête Http et la manipulation des fichiers XML.

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Faire une recherche de personne et récupérer les informations disponibles.

Trois possibilités de recherche :

  • Par Nom
  • Par Prénom
  • Par Nom et Prénom

Pour effectuer ces recherches, il faudra donc créer deux champs de recherche, nom et prénom.

Pour traiter la recherche, il faudra tester quelles sont les champs renseignés pour envoyer la bonne requête. Un test de chaine vide sur les champs de saisie suffira.

Dans le code suivant,

  • SNomZiki est le champ de saisie Nom
  • SPrenomZiki est le champ de saisie Prénom
  • monresultat est une variable de type chaîne
 
Sélectionnez

SI SNomZiki <> "" ET SPrenomZiki <> "" ALORS
	HTTPRequête("http://www.ziki.com/fr/web.xml?first_name=" + SPrenomZiki + "&last_name=" + SNomZiki)
	monresultat = HTTPDonneRésultat(HTTPRésultat)
	fSauveTexte("C:\Temp\resultat.xml", monresultat)
SINON
	SI SNomZiki <> "" ET SPrenomZiki = "" ALORS
		HTTPRequête("http://www.ziki.com/fr/web.xml?last_name=" + SNomZiki)
		monresultat = HTTPDonneRésultat(HTTPRésultat)
		fSauveTexte("C:\Temp\resultat.xml", monresultat)
	SINON
		SI SNomZiki = "" ET SPrenomZiki <> "" ALORS
			HTTPRequête("http://www.ziki.com/fr/web.xml?first_name=" + SPrenomZiki)
			monresultat = HTTPDonneRésultat(HTTPRésultat)
			fSauveTexte("C:\Temp\resultat.xml", monresultat)
		FIN
	FIN
FIN

Déroulement de l'action de recherche :

Test du cas d'emploi et envoi de la requête formatée correctement. La requête est la même pour chaque cas, seul les paramètres de recherche change.

La base est : http://www.ziki.com/fr/web.xml?

Les paramètres sont :

  • Pour le prénom : first_name= //suivi de votre variable prénom
  • Pour le nom : last_name= //suivi de votre variable Nom
  • Le signe & lie les paramètres de recherche entre eux dans le cas d'une recherche combinée Nom + Prénom.

Après cela, on stocke le résultat renvoyé dans une variable de type chaîne (chaîne = HttpDonneResultat(HttpResultat)), ici monresultat et on sauvegarde cette chaîne dans un fichier xml grâce à la fonction FSauveTexte(chemin + nom du fichier).

II. Tirer des informations du résultat obtenu

Afin d'exploiter le résultat il nous faut initialiser une vue sur le document XML grâce à la fonction XMLDocument(Nom à attribuer à cette vue, source xml). Dans le cas de mon exemple cela donne :

 
Sélectionnez
XMLDocument("ZIKI",monresultat)

L'affectation de la chaîne monresultat comme source xml est possible puisque à aucun moment cette chaîne n'a été modifiée depuis le début du traitement.

II-A. Récupération des informations.

Les informations que nous souhaitons exploiter dans le résultat retourné et sur lequel nous avons ouvert une vue précédemment sont stockés entre balise. Le tout est de connaitre ces balises afin d'axer notre recherche.

Les balises utilisées par Ziki

response

pages

<current> - Page Courante

<total> - Nombre de page de résultats trouvée, une page peut contenir 16 résultats Ziki différents

/pages

zikis

ziki

<Nickname> - pseudo

<First_Name> - Prénom

<Last_name> - Nom

<City> - Ville

<Country> - Code Pays (FR pourFrance par exemple)

Thumbnail

http://www.. - Indique l'url du thumbnail de l'utilisateur si une photo existe

/Thumbnail

URL

<Html> -Url du profil de l'utilisateur

<XML> - Url de l'XML de l'utilisateur

/URL

/Ziki

/Zikis

/Response

Maintenant que nous connaissons les informations de base que nous pouvons rechercher, passons à la méthode de recherche en elle-même grâce au fonction de navigation, de recherche, et d'extraction de données dans les flux XML de WinDev.

 
Sélectionnez

XMLRacine("ZIKI")
XMLRecherche("ZIKI","la balise à rechercher",XMLBalise+XMLSousElément,XMLExact+XMLIgnoreLaCasse)
SI XMLTrouve("ZIKI") ALORS
	XMLFils("ZIKI")
	mavariable = XMLDonnée("ZIKI")
FIN
		

Premièrement, on se positionne en haut de notre vue XML afin que la recherche se déroule hiérarchiquement et on donne les indications de recherche, ici on effectue une recherche sur notre vue ("ZIKI"), "le nom de la balise à rechercher", et les options de recherche. L'utilisation de XMLExact+XMLIgnoreCasse est possible lorsque l'on sait que chercher. Il est également possible de chercher directement dans la valeur des balises et des attributs en utilisant l'option de recherche XMLValeur.

Ensuite, nous poursuivons le traitement seulement si un résultat est renvoyé. Si tel est le cas, on se positionne sur le fils XML pour récupérer la valeur, même si ce n'est pas à chaque fois indispensable cela permet de prévoir les cas où ça l'est, et on attribue le résultat de la recherche à une variable que vous aurez créé.

Pour les noms, prénoms, ville et pseudo il est intéressant d'attribuer la variable qui va contenir le résultat par cette méthode :

 
Sélectionnez
mavariable = UTF8VersChaîne(XMLDonnée("ZIKI"),alphabetAnsi)

Cela permet d'obtenir un résultat interprétant convenablement les accents et autres caractères spéciaux.

II-B. Afficher l'image <thumbnail>

Ici le traitement diffère légèrement, la recherche sur la balise <thumbnail> est classique et renvoie l'Url de l'image utilisateur que nous devrons exploiter afin de pouvoir l'afficher dans un champ image.

 
Sélectionnez

XMLRecherche(&#8221;ZIKI&#8221;, &#8220;thumbnail&#8221;, XMLBalise+XMLSousElément, XMLExact+XMLIgnoreLaCasse)
SI XMLTrouve(&#8221;ZIKI&#8221;) ALORS
	XMLFils(&#8221;ZIKI&#8221;)
	monurl = XMLDonnée(&#8221;ZIKI&#8221;)
		

Afin de pouvoir afficher l'imag, il va nous falloir l'enregistrer au préalable. Pour ce faire, nous allons créer un fichier Images.gif via la fonction FOuvre avec l'option FoCréation.

 
Sélectionnez

	// Ouverture du fichier &#8220;C:\MesImages\Images.GIF&#8221;
	IdFichier = fOuvre (&#8221;C:\Temp\Images.GIF&#8221; , foCréation )
	SI IdFichier <> - 1 ALORS
		

Nous allons ensuite, envoyer une requête HTTP sur l'Url récupérée et stockée dans une variable en fin de recherche (monurl). Il nous faudra déterminer si la requête a abouti.

 
Sélectionnez

		// Récupération de l'image
		ResAppel = HTTPRequête ( monurl )
		

Si la requête est un succès, nous allons écrire son résultat directement dans le fichier Images.gif que nous avons créé via la fonction FEcrit avec la valeur HTTPDonneRésultat. Si la requête a échoué, nous n'écrivons rien et dans les deux cas, il ne faut pas oublier de fermer le fichier Images.gif créé afin de ne pas bloquer les futures utilisations de celui-ci.

 
Sélectionnez

		SI ResAppel = Vrai ALORS
			// Enregistrement de l'image récupérée dans le fichier
			fEcrit(IdFichier, HTTPDonneRésultat())
		FIN
		// Fermeture du fichier
		fFerme ( IdFichier )
	FIN
		

On peut maintenant afficher notre image dans un champ prévu à cet effet. Iziki est ici un champ image.

 
Sélectionnez

	IZiki = "C:\Temp\Images.GIF"
FIN

La récupération et l'affichage des images ne posent plus de soucis. Voici le code complet pour une vision d'ensemble.

 
Sélectionnez

XMLRecherche("ZIKI", "thumbnail", XMLBalise+XMLSousElément, XMLExact+XMLIgnoreLaCasse)
SI XMLTrouve("ZIKI") ALORS
	XMLFils("ZIKI")
	monurl = XMLDonnée("ZIKI")
	// Ouverture du fichier &#8220;C:\MesImages\Images.GIF"
	IdFichier = fOuvre ("C:\Temp\Images.GIF" , foCréation )
	SI IdFichier <> - 1 ALORS
		// Récupération de l'image
		ResAppel = HTTPRequête ( monurl )
		SI ResAppel = Vrai ALORS
			// Enregistrement de l'image récupérée dans le fichier
			fEcrit(IdFichier, HTTPDonneRésultat())
		FIN
		// Fermeture du fichier
		fFerme ( IdFichier )
	FIN
	IZiki = &#8220;C:\Temp\Images.GIF"
FIN
		

III. Autres balises et recherche possible.

Maintenant que vous êtes à l'aise avec la recherche et le traitement des informations, voici de quoi vous occuper encore un peu.

Une requête effectuée de cette manière revoie un fichier XML beaucoup plus complet :

http://www.ziki.com/fr/people/"PSEUDO".xml

Les balises de ce fichier XML :

 
Sélectionnez

<response version="1.0?>
	<ziki>
		<url></url>
		<nickname></nickname>
		<first_name></first_name>
		<last_name></last_name>
		<gender></gender>
		<birthday>0000-00-00</birthday>
		<city></city>
		<country></country>
		<lang></lang>
		<website></website>
		<vcard action= "/>
		<baseline></baseline>
		<photos>
			<thumb></thumb>
			<small></small>
			<medium></medium>
		</photos>
		<stats>
			<feeds></feeds>
			<followings></followings>
			<followers></followers>
			<connections></connections>
			<technorati_rank></technorati_rank>
			<feedburner_circulation></feedburner_circulation>
		</stats>
		<feeds>
			<feed title=></feed>
		</feeds>
		<network>
			<followings></followings>
			<followers></followers>
			<connections></connections>
		</network>
		<profiles>
			<profile>
				<name>LinkedIn</name>
				<url></url>
			</profile>
			<profile>
				<name>Dailymotion</name>
				<url></url>
			</profile>
			<profile>
				<name>Facebook</name>
				<url></url>
			</profile>
		</profiles>
	</ziki>
</response>
		

C'est un exemple d'ossature, celle-ci diffère bien sûr suivant les profils utilisateurs que vous recherchez.

Vous pouvez également effectuer ces recherches :

  • Fans d'un Ziki : http://www.ziki.com/fr/people/"PSEUDO"/favorites/fans.xml
  • Connections d'un Ziki : http://www.ziki.com/fr/people/"PSEUDO"/favorites/connections.xml (Prochainement)

Pour ces deux recherches, vous pouvez ajouter ?page="numero de la page que vous souhaitez consulter" en fin d'url afin de naviguer dans les pages de résultats.

Une dernière pour la route, la recherche par mot clé simple et composée.

Simple : http://www.ziki.com/fr/people.xml?tags="MOT CLE 1?

Composée : http://www.ziki.com/fr/people.xml?tags="MOT CLE 1? + "MOT CLE 2?

Il va de soi qu'il va vous falloir intégrer ces traitements dans des boucles pour des recherches multi-résultat et que les extractions XML des fonctions WinDev seraient une piste à approfondir afin de, par exemple, créer une vue par page puis par résultat.

Enfin, pour approfondir le sujet, je vous conseille d'aller jeter un oil par là

Et bien voilà. Je précise que c'est une manière de coder sous WinDev avec l'API de ZIKI et certainement ni la seule, ni la meilleure.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2008 Stéphane Bertolotti. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.