etn406 / api-allocine-helper

l'API Allociné Helper est un script PHP permettant d'utiliser l'API d'Allociné : récupérez facilement les informations sur les films, les séries TV, les stars, etc. || API Allociné Helper is support for using the API of Allociné : find lots of information about movies, people, etc.
50 stars 36 forks source link

Trop souvent : Erreur 2: An error occurred while retrieving the data. #13

Open coralie10 opened 10 years ago

coralie10 commented 10 years ago

Bonjour,

Tout d'abord je vous remercie bcp pour votre appli ! J'ai bien la dernière version que j'utilise pour mon projet de fin cours.

Voilà mon problème : en local je n'ai aucun souci, j'ai passé mon site en ligne ( hébergement OVH) et les requêtes fonctionnent au petit bonheur la chance ! J'ai très très souvent l'erreur 2: An error occurred while retrieving the data. Exemple avec "the dark", "300", "trains".

J'ai bien enregistré mes fichiers en utf8, j'ai cru que c'était bon mais non ... si vous avez une idée ... surtout que en local (sous wamp) cela fonctionne parfaitement.

Merci par avance pour votre aide. Coralie

etn406 commented 10 years ago

Bonjour, Désolé pour la réponse un peu tardive. Je ne vais pas pouvoir beaucoup t'aider, si ton problème ne survient que sur l'hébergement. Il devrait tout de même être possible de se renseigner : j'ai rajouté une ligne de code qui affiche un message plus détaillé lors d'une erreur de ce type, il te suffit de mettre à jour le fichier api-allocine-helper.php sur ton serveur.

draganshadow commented 10 years ago

Il y a une erreur de syntaxe sur la ligne ajoutée :)

marboin commented 10 years ago

Il semblerait que certaines plages IP d'OVH soient bannies par Allociné (depuis peut-être 2-3 semaines, je n'avais pas utilisé mon script depuis un moment). Le serveur ne renvoie aucune erreur mais ne revoie rien. La seule solution que j'ai trouvé pour l'instant c'est de passer par un proxy pour faire la requête.

lesurfeur commented 10 years ago

Curieux car normalement avec l'api, à chaque requête sur allociné, une ip et un browser différent est envoyé. Pour ma part que se soit en local ou sur un dédié cela fonctionne parfaitement. Vérifies qu'a chaque requête tu as bien une ip différente de transmis ;)

marboin commented 10 years ago

Pas de correction trouvée à ce jour, j'ai bien une IP/User-Agent différent à chaque fois. Je reçoit juste un HTTP/1.1 403 Forbidden et c'est tout. (tout fonctionne sur mon poste en local) Je me suis rabattu sur TMDB en attendant, qui dispose d'une jolie base (mais malheureusement pas toujours en FR), et d'une API officielle =)

lesurfeur commented 10 years ago

Je ne sais pas quoi tu dires, je n'ai pas ce problème et ton script fonctionne en local, donc ce n'est pas l'API d'étienne qui est en cause. Une requête mal effectuée peut être ou un blocage de ton hébergeur par allociné. As tu essayé sur un autre hébergeur ? Tmdb est bien mais malheureusement il manque trop d'info sur les films, base moins importante et beaucoup de données erronées, je l'utilise également avec beaucoup de retouche à faire et des que je peux je met les infos à jour sur leur site.

dadateite commented 10 years ago

J'ai également ce problème, il se produit de façon assez aléatoire mais quand on déjà fait une grosse quantité d'appel à la fonction.

Pourtant j'héberge tout chez moi sur mon NAS.

lesurfeur commented 10 years ago

il y a peut être un nombre limité d'appel par ip par heure ou par jour effectué par allociné. Je n'ai pas testé par lot, ce qui voudrait dire avec le même appel et donc ip. Car en appel unique pour chaque film (donc l'ip change à chaque fois) je n'ai pas de problème pour le moment.

marboin commented 10 years ago

Après analyse, il y a (apparament) une nouvelle clé secrète pour signer les appels (et aussi une nouvelle methode de signature). Je vous met le ZIP des fichiers concernés : http://s000.tinyupload.com/index.php?file_id=80051159646445188755

Et la totale : http://s000.tinyupload.com/index.php?file_id=08957661746762957232

BuildConfig.java contient la config de base AllocineApplication.java instancie init() de BuildConfigData BuildConfigData.java met la conf dans les bonnes variables

la classe finalizeUrl de AlloCineClient.java est celle qui nous intéresse, la ou les appels sont signés La signature est dans str5.

protected String finalizeUrl(String paramString1, String paramString2)
{
  if (paramString2 == null) {}
  int i;
  do
  {
    return paramString2;
    i = 1 + paramString2.indexOf("?");
  } while (i <= 0);
  String str1 = paramString2.substring(0, i);
  String str2 = paramString2.substring(i);
  String str3 = "&sed=" + sigDateFormat.format(new Date());
  Object localObject = str2 + str3;
  String str4 = paramString1 + (String)localObject + this.key;
  try
  {
    MessageDigest localMessageDigest = MessageDigest.getInstance("SHA-1");
    localMessageDigest.reset();
    localMessageDigest.update(str4.getBytes("iso-8859-1"), 0, str4.length());
    String str5 = URLEncoder.encode(new String(CustomBase64.encode(localMessageDigest.digest(), 0)), "utf-8");
    if (str5.endsWith("%0A")) {
      str5 = str5.substring(0, -3 + str5.length());
    }
    if (str5.length() > 48) {
      str5 = str5.substring(0, 48);
    }
    String str6 = (String)localObject + "&sig=" + str5;
    localObject = str6;
  }
  return str1 + (String)localObject;
}

Si il y a des fous de Java, j'ai trouvé les infos, mais pas encore réussi à faire fonctionner la classe avec la nouvelle méthode.

phonegapps commented 10 years ago

Il y a aussi le CustomBase64 où il faudrait traduire la méthode encode qui est bien grosse...

Quoique je ne sais pas si c'est le décompileur qui fait ça, mais finalizeUrl a l'air d'uniquement retourner paramString2 ? Y a une autre finalizeUrl dans VolleyClient.java qui elle retourne en effet directement paramString2...

phonegapps commented 10 years ago

Un peu imbitable le code. Ca a dû être "obfusqué". Le pire est la partie avec le CustomBase64. @marboin quel décompileur as-tu utilisé ? Peut-être qu'avec un deobfuscateur comme https://github.com/Storyyeller/Krakatau le résultat sera plus lisible.

gdoise commented 4 years ago

Je relance peut être le sujet (non résolu n'est-il pas ?): Bonjour à tous et bonjour Etienne Gauvin, Je travail pour un petit ciné municipal depuis 25 ans, et programmer est mon passe temps. Ainsi, j'ai développé énormément de choses en vb puis en javascript au sein des google sheet pour exploiter les info d'allociné. En passant par les APIs aussi bien qu'en travaillant sur les pages web d'allociné en utilisant des tas de stratagèmes :) J'ai découvert , il y a quelques mois, ton formidable projet api-allocine-helper (adaptation du du projet https://pypi.org/project/allocine si mes souvenirs sont exacts ? ) mais c'est seulement depuis hier que je me suis mis à le tester. Je n'avais plsu fait de php depuis bien 5 ans voir plus. Ca va ça revient mais avec les objets je tatonne , va falloir que je planche sur les cours....

Bref, ce mardi 31/03/2020 j'ai su installer et utiliser api-allocine-helper en local. Youpii ! Pour mes essais sur free.fr j'ai eu quelques déboires

Peut être saurez-vous m'éclairer. Je partagerai volontiers avec vous sur mes projets dont je te parlais. Ce n'est pas à tout les coins de rues qu'on croise quelqu'un qui fait du code et encore moins sur un même but ;)

Amicalement et en confinement , Guillaume DOISE J'ai 49 ans, j'habite Bailleul , dans le Nord 59270

etn406 commented 4 years ago

Bonjour Guillaume, et désolé de ne pas t'avoir répondu avant, je passe rarement sur GitHub ces dernières années et au moment où j'avais vu ton mail, je ne pouvais pas répondre, et j'ai ensuite oublié.

Si tu arrives à te connecter à l'API et récupérer des données en local mais pas sur ton hébergement free.fr, alors le problème vient surtout de l'hébergement. Peut-être qu'il n'est pas permis d'accéder à des sites externes sur celui-ci ? Il faudrait tenter de récupérer le contenu d'une page (par exemple directement l'accueil de www.google.fr) avec cURL ou file_get_contents... Si tu peux le faire en local mais pas sur ton hébergement, alors c'est bien l'hébergement le problème :(

gdoise commented 4 years ago

Merci Etienne ! :) J'essaierai donc ça . Là ce soir c'es montage vidéo . Un ptiti délire marionnettes pour l'anniv de mon frangin :) A bientôt , je te ferai un retour bien entendu ! En tout cas ton api m'aide déjà énormément en passant par l'hebergement sur mon serveur / raspberrypi ! MERCI ! A+, Guillaume

Le jeu. 18 juin 2020 à 12:09, Étienne Gv notifications@github.com a écrit :

Bonjour Guillaume, et désolé de ne pas t'avoir répondu avant, je passe rarement sur GitHub ces dernières années et au moment où j'avais vu ton mail, je ne pouvais pas répondre, et j'ai ensuite oublié.

Si tu arrives à te connecter à l'API et récupérer des données en local mais pas sur ton hébergement free.fr, alors le problème vient surtout de l'hébergement. Peut-être qu'il n'est pas permis d'accéder à des sites externes sur celui-ci ? Il faudrait tenter de récupérer le contenu d'une page (par exemple directement l'accueil de www.google.fr) avec cURL ou file_get_contents... Si tu peux le faire en local mais pas sur ton hébergement, alors c'est bien l'hébergement le problème :(

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/etienne-gauvin/api-allocine-helper/issues/13#issuecomment-645921592, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFLRDMA6G2XVMEYMOPNLOYDRXHRWFANCNFSM4ALFJ3WA .

gdoise commented 4 years ago

Bonjour Etienne :)

J'aurais aimé avoir ta confirmation, ton avis ... J'ai bien l'impression que là soudainement depuis qq jours allociné bloque une fois de plus: http://api.allocine.fr/rest/v3/movie?media=mp4-lc&partner=YW5kcm9pZC12Mg&profile=large&version=2&code=275707 Me répond : "403 - [Mon ip]" Puis j'ai l'erreur: "Error 3: An JSON error (4) occurred when converting data: Syntax error" à l'appel de mon script PHP: http://raspgui.hd.free.fr/allocine/listFilmsTable.php?searched=dark dont voici le code ici plus loin.

Dis moi , c'est foutu ! ? lol ;) Ou tu as des pistes. Je te remercie encore, Guillaume DOISE

<?php

// Inclure le script require_once "./api-allocine-helper.php"; $search = htmlspecialchars($_GET["searched"]); $allohelper = new AlloHelper; ?>

search($search, $page, $count); // No result ? if (!$data or count($data->movie) < 1) throw new ErrorException('No result for "' . $search . '"'); // View number of results. echo ''; // For each movie result. foreach ($data->movie as $i => $movie) { // i | code | title echo ''; } } // Error catch (ErrorException $e) { echo ''; } ?>
'; ?>
'."// " . $data->results->movie .' results for "' . $search . '":' . PHP_EOL; echo '
'.$i . "\t" . $movie->code . "\t" . $movie->title . PHP_EOL; echo '
'."Error " . $e->getCode() . ": " . $e->getMessage() . PHP_EOL; echo '

Le jeu. 18 juin 2020 à 20:45, Guillaume Doise gdoise@gmail.com a écrit :

Merci Etienne ! :) J'essaierai donc ça . Là ce soir c'es montage vidéo . Un ptiti délire marionnettes pour l'anniv de mon frangin :) A bientôt , je te ferai un retour bien entendu ! En tout cas ton api m'aide déjà énormément en passant par l'hebergement sur mon serveur / raspberrypi ! MERCI ! A+, Guillaume

Le jeu. 18 juin 2020 à 12:09, Étienne Gv notifications@github.com a écrit :

Bonjour Guillaume, et désolé de ne pas t'avoir répondu avant, je passe rarement sur GitHub ces dernières années et au moment où j'avais vu ton mail, je ne pouvais pas répondre, et j'ai ensuite oublié.

Si tu arrives à te connecter à l'API et récupérer des données en local mais pas sur ton hébergement free.fr, alors le problème vient surtout de l'hébergement. Peut-être qu'il n'est pas permis d'accéder à des sites externes sur celui-ci ? Il faudrait tenter de récupérer le contenu d'une page (par exemple directement l'accueil de www.google.fr) avec cURL ou file_get_contents... Si tu peux le faire en local mais pas sur ton hébergement, alors c'est bien l'hébergement le problème :(

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/etienne-gauvin/api-allocine-helper/issues/13#issuecomment-645921592, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFLRDMA6G2XVMEYMOPNLOYDRXHRWFANCNFSM4ALFJ3WA .

etn406 commented 4 years ago

Bonjour Guillaume, en effet ça sent le roussi pour ton IP, le code HTTP 403 signifie probablement que ton accès a été bloqué par Allociné... Tu peux passer par un VPN ou une autre connexion internet, je ne vois que ça ! Et ça n'empêchera pas l'IP suivant d'être bloqué aussi, si ils te repèrent.

(L'erreur suivante "Error 3: An JSON error (4) occurred when converting data: Syntax error" n'est qu'une conséquence de l'erreur 403)