Je ne sais pas ce que tu as trouvé, je ne sais pas te répondre...j'ai trouver une class de parsing json pour twitter pensez vous que ça suffise ?
Je vais reprendre en partie ce que j'ai dit dans mon précédent message.qu'es que tu appel flux à récupéré ? Moi ce que je veux récupéré c'est toutes les infos d'une fiche ex : Avatar (synopsis, titre, titre original durée, acteurs, réalisateur, Affiche etc...) En fait je m’était beaucoup inspiré du projet de Dominique.
Sur la page que nous a communiqué Dominique DAUSSY
http://wiki.gromez.fr/dev/api/allocine_v3
Il y a plein d'exemples de requêtes qui retourne du Json
Par exemple, si tu cliques sur ce lien http://api.allocine.fr/rest/v3/searc...ar&format=json
Tu vas avoir un flux Json s'afficher.
Quand on regarde plus en détail l'URL on voit qu'il est demandé tous les movie,theater,person,news,tvseries qui contiennent le mot avatar
Il suffit de modifier l'URL ainsi pour demander seulement tous les filmes (movie) qui contiennent le mot avatar
Code : Sélectionner tout - Visualiser dans une fenêtre à part http://api.allocine.fr/rest/v3/search?partner=YW5kcm9pZC12M3M&filter=movie,theater,person,news,tvseries&count=5&page=1&q=avatar&format=json
Comme tu peux le voir suivant les paramètres utilisés et leurs contenus tu auras des réponses différentes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part http://api.allocine.fr/rest/v3/search?partner=YW5kcm9pZC12M3M&filter=movie&count=5&page=1&q=avatar&format=json
Donc a toi de voir pour que l'URL te permette d'avoir en réponse toutes les informations qui te sont nécessaires...
Cette URL retourne le Code, le Titre_original, le Titre, l'Annee_de_production, la Date_de_sortie, Réalisateur, les Acteurs, la Note_de_presse, la Note_utilisateur, l'URL_poster et une liste de lien (la 1ère = fiche allocine)
Ne connaissant pas exactement ton besoin j'ai fait une interprétation de ce flux.
Tu as la chance que je suis curieux. Travaillant beaucoup avec du XML mais ne connaissant pas Json j'ai eu envie de voir comment on peut en extraire des données.
L'idée c'est de reproduire la fonction XMLExtraitChaîne() qui permet d'extraire le contenu d'une balise dans un document XML.
Pour cela j'ai fait une procédure JsonExtraitChaîne() qui essaye d'interpréter le codage Json.
Cette procédure est simpliste, elle marche avec ce flux mais je ne garantis pas son fonctionnement dans tous les cas...
Son code mérite sans doute d'être amélioré... à ceux que ça dit merci pour leur contribution...
Tout d'abord un bout de code qui permet d'envoyer un requête paramétrée avec le champ SAI_Mots_clés qui comme son nom l'indique contient les mots clés...
Puis on récupère la réponse dont on extrait la liste des films. Pour réduire le code à analyser et pouvoir parcourir chaque film avec ExtraitChaîne()
Enfin on parcours cette liste en récupérant les infos avec la procédure JsonExtraitChaîne() et on rempli une table
La procédure JsonExtraitChaîne()...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 nPosition_depart,nPosition_fin,nNb_href,i sont des entier sChaine_Liste_de_Films,sChaine_Film sont des chaîne sCode,sTitre_original,sTitre,sAnnee_de_production,sDirecteurs,sActeurs,xNote_de_presse,xNote_utilisateur,sURL_poster,sURL_fiche,sURL sont des chaîne dDate_de_sortie est une Date sURL = ChaîneConstruit("http://api.allocine.fr/rest/v3/search?partner=YW5kcm9pZC12M3M&filter=movie&q=%1&format=json",SAI_Mots_clés) TableSupprimeTout(TABLE_Film) // Lance la requête SI PAS HTTPRequête(sURL) ALORS Erreur(ErreurInfo()) RETOUR FIN // Récupère le résultat de la requête sChaine_reponse est une chaîne = HTTPDonneRésultat(httpRésultat) // récupère la liste des films seulement nPosition_depart = Position(sChaine_reponse,"""movie"":[") + 10 nPosition_fin = Position(sChaine_reponse,"]",Taille(sChaine_reponse),DepuisFin) sChaine_Liste_de_Films = Milieu(sChaine_reponse,nPosition_depart,nPosition_fin - nPosition_depart - 1) // boucle pour récupérer chaque film et les ajouter dans la table BOUCLE i += 1 sChaine_Film = ExtraitChaîne(sChaine_Liste_de_Films,i,"},{") SI sChaine_Film = EOT ALORS SORTIR FIN sCode = JsonExtraitChaîne(sChaine_Film,"code",1) sTitre_original = JsonExtraitChaîne(sChaine_Film,"originalTitle",1) sTitre = JsonExtraitChaîne(sChaine_Film,"title",1) sAnnee_de_production = JsonExtraitChaîne(sChaine_Film,"productionYear",1) dDate_de_sortie = Remplace(JsonExtraitChaîne(sChaine_Film,"releaseDate",1),"-","") sDirecteurs = JsonExtraitChaîne(sChaine_Film,"directors",1) sActeurs = JsonExtraitChaîne(sChaine_Film,"actors",1) xNote_de_presse = JsonExtraitChaîne(sChaine_Film,"pressRating",1) xNote_utilisateur = JsonExtraitChaîne(sChaine_Film,"userRating",1) // "href" peut être dans "poster" et dans "link" SI Position(sChaine_Film,"""poster"":") > 0 ALORS nNb_href +=1 sURL_poster = Remplace(JsonExtraitChaîne(sChaine_Film,"href",1),"/","") SINON sURL_poster = "" FIN SI Position(sChaine_Film,"""link"":") > 0 ALORS nNb_href +=1 sURL_fiche = Remplace(JsonExtraitChaîne(sChaine_Film,"href",nNb_href),"/","") SINON sURL_poster = "" FIN TableAjouteLigne(TABLE_Film,sCode,sTitre_original,sTitre,sAnnee_de_production,dDate_de_sortie,sDirecteurs,sActeurs,xNote_de_presse,xNote_utilisateur,sURL_poster,sURL_fiche) nNb_href = 0 FIN
A noter dans la partie "link" il y a des [] donc un peut avoir en retour un tableau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 PROCEDURE JsonExtraitChaîne(sSourceJson est une chaîne,sBalise est une chaîne,nIndice est un entier) Est_une_chaine est un booléen = Faux sBalise_cote est une chaîne = """" + sBalise + """:" nPosition_balise est un entier nPosition_debut_valeur est un entier nPosition_fin_valeur est un entier sValeur_a_renvoyer est une chaîne i est un entier nPosition_balise = PositionOccurrence(sSourceJson,sBalise_cote,nIndice) nPosition_debut_valeur = nPosition_balise + Taille(sBalise_cote) SI Milieu(sSourceJson,nPosition_debut_valeur,1) = """" ALORS nPosition_debut_valeur += 1 Est_une_chaine = Vrai FIN nPosition_fin_valeur = Taille(sSourceJson) SELON Est_une_chaine CAS Vrai SI Position(sSourceJson,""",",nPosition_debut_valeur) > 0 ET Position(sSourceJson,""",",nPosition_debut_valeur) < nPosition_fin_valeur ALORS nPosition_fin_valeur = Position(sSourceJson,""",",nPosition_debut_valeur) FIN SI Position(sSourceJson,"""},",nPosition_debut_valeur) > 0 ET Position(sSourceJson,"""},",nPosition_debut_valeur) < nPosition_fin_valeur ALORS nPosition_fin_valeur = Position(sSourceJson,"""},",nPosition_debut_valeur) FIN SI Position(sSourceJson,"""}],",nPosition_debut_valeur) > 0 ET Position(sSourceJson,"""}],",nPosition_debut_valeur) < nPosition_fin_valeur ALORS nPosition_fin_valeur = Position(sSourceJson,"""}],",nPosition_debut_valeur) FIN CAS Faux SI Position(sSourceJson,",",nPosition_debut_valeur) > 0 ET Position(sSourceJson,",",nPosition_debut_valeur) < nPosition_fin_valeur ALORS nPosition_fin_valeur = Position(sSourceJson,",",nPosition_debut_valeur) FIN SI Position(sSourceJson,"},",nPosition_debut_valeur) > 0 ET Position(sSourceJson,"},",nPosition_debut_valeur) < nPosition_fin_valeur ALORS nPosition_fin_valeur = Position(sSourceJson,"},",nPosition_debut_valeur) FIN SI Position(sSourceJson,"}],",nPosition_debut_valeur) > 0 ET Position(sSourceJson,"}],",nPosition_debut_valeur) < nPosition_fin_valeur ALORS nPosition_fin_valeur = Position(sSourceJson,"}],",nPosition_debut_valeur) FIN FIN POUR i = nPosition_fin_valeur A nPosition_debut_valeur PAS -1 SI Milieu(sSourceJson,i,1) DANS ("""",",","}","]") ALORS nPosition_fin_valeur -= 1 SINON SORTIR FIN FIN SI nPosition_balise = 0 ALORS sValeur_a_renvoyer = "" SINON sValeur_a_renvoyer = Milieu(sSourceJson,nPosition_debut_valeur,nPosition_fin_valeur - nPosition_debut_valeur + 1) FIN RENVOYER sValeur_a_renvoyer
Mon code est simpliste il ne récupère que le 1er lien (la fiche allocine) si tu as besoin de plus tu dois pouvoir y arriver en faisant une boucle.
Partager