Vous êtes ici : Accueil > Forums > Messages de SMGbab16

Messages de SMGbab16

Mercredi 26 Août 2015 17:59

Hello

Voici la nouvelle version de ma class pour les API v2
http://pastebin.com/FF1GHdMz

Il manque quelques nouvelles API (xml_licence_b, xml_res_cla et xml_new_actu) mais la principale à mon goût est dispo: xml_histo_classement

Pour l'utiliser c'est assez simple:

Citation de :

use Mping\CoreBundle\Fftt;

$api = new Service('ID_APPLICATION', 'MOT_DE_PASSE');
$api->setSerial(Service::generateSerial());
$api->initialization();

$api->getJoueur('xxx');


D'après la doc de la FFTT il faut attribué un serial par utilisateur donc vous devrez faire quelque chose comme ca:

Citation de :

if (empty($_SESSION['serial'])) {
$_SESSION['serial'] = Serial::generateSerial();
}

$api->setSerial($_SESSION['serial']);


Je vous met également la class que j'utilise pour mettre en cache les données: http://pastebin.com/98U2uaaT
Par contre la class utilise Doctrine donc ce n'est pas forcement simple à utiliser si vous ne connaissez pas Doctrine. Mais ca donne quand meme une idée de comment mettre en cache les données de l'API avec ma class:

Citation de :

$cache = new DatabaseCache($doctrine, 'cache_fftt');
$api->setCache($cache);
Message modifié 2 fois, dernière modification Mercredi 26 Août 2015 18:00 par SMGbab16

Mercredi 01 Juillet 2015 01:47

Intéressant!
Je mettrai à jour ma class pour utiliser leur système d'authentification et les nouvelles API (/mobile/pxml à la place de /mobile/xml)

Pour info la nouvelle version de smartping utilise ces nouvelles API avec comme identifiant d'application id=AM001
Citation de FFTT :
A noter : le service de cryptage sera mis en place le 1er octobre 2015. L'utilisation des API natives sera alors coupée.

Ce qui signifie que le 1er octobre l'ancienne version de smartping ne sera plus fonctionnel

Pour ceux dont le projet aura été refusé par la FFTT il ne restera plus qu'a trouver le mot de passe utilisé par smartping pour signer leurs requêtes comme smartping... mais cela n'est surement pas très légal... je m'arrête donc la sur le sujet ^^

Mercredi 07 Mai 2014 15:46

Bonjour,

Je cherche à acheter ce bois pour le tester.
Message modifié 1 fois, dernière modification Dimanche 18 Mai 2014 05:31 par SMGbab16

Mercredi 07 Mai 2014 01:01

Oui au pire tu change le constructeur de la class Service pour ne pas utiliser Doctrine\Common\Cache\Cache
et tu fais ta propre class de cache. Tout ce dont il y a besoin c'est 3 méthodes: fetch($id), contains($id), save($id, $data, $lifeTime=0)

Mercredi 07 Mai 2014 00:51

C'est à toi d'utiliser le cache que tu veux.
Quand tu instancie le service il faut lui passé comme premier paramètre une instance de Doctrine\Common\Cache\Cache (http://docs.doctrine-project.org/en/2.0.x/reference/caching.html, il y a seulement besoin du package Common de Doctrine, pas besoin de toute l'usine à gaz ^^)
C'est à toi de choisir le type de cache (APC, Memcache, Fichiers, ...)
Si tu ne passe pas de paramètre il n'y a pas de cache

Pour ma part j'utilise un cache en base de données pour pouvoir effacer une certaines partie du cache (par exemple la fiche d'un joueur quand les nouvelles situation mensuelles sont dispo) avec une simple requête SQL: http://pastebin.com/dap2zSRV
Par contre il y a besoin de Doctrine DBAL pour cette class :/
Message modifié 1 fois, dernière modification Mercredi 07 Mai 2014 00:52 par SMGbab16

Mercredi 07 Mai 2014 00:32

Ça serait donc un bug de OVH, pas une contre mesure de la fédé, ça me rassure Content
Tu peux essayé avec le code en commentaire dans la fonction getData() qui utilise stream_get_contents() au lieu de cURL. Peut être que ça marchera mieux sur les mutualisés de OVH

Mercredi 07 Mai 2014 00:20

Je suis chez OVH également mais en serveur dédié.
Pas de soucis pour moi.

Vous êtes en hébergement mutualisé ?

Lundi 14 Avril 2014 15:35

En effet, au temps pour moi ^^
J'utilise Wireshark (http://www.wireshark.org/) pour voir toutes les requêtes qui passe sur le réseau et le SDK Android (http://developer.android.com/sdk/index.html) pour faire tourner Smartping sur le PC.

Il est également possible de décompiler l'application avec http://www.decompileandroid.com/ par exemple ^^

Lundi 14 Avril 2014 13:13

apoint correspond au nombre de points du mois précédent. Le webservice ne renvoie pas directement la progression mensuelle mais le nombre de points du mois en cours et celui du mois précédent. Une simple soustraction et voila Content

Lundi 14 Avril 2014 13:04

robinos33: Smartping utilise effectivement ce user-agent, en tout cas sur android. On peut utiliser les option curl que tu cite mais je préfère passer tous les headers directement d'un coup et je suis sûr que les requête que je génère sont identiques à Smartping (vérifié en sniffant le réseau).

archeo: ce code est un outil permettant d'accéder aux données de smartping. Il est destiné aux developpeurs. Pas vraiment utilisable par un non initié, désolé :/

fandusrfc: je pense que la méthode xml est beaucoup plus maintenable et propre. Même si ils font des modifications ca sera toujours utilisable car a partir du moment ou tu y accède avec ton smartphone tu peux y accéder avec cURL Content

Lundi 14 Avril 2014 02:04

Merci sparkodutos pour ton retour d’expérience très intéressant.
Par contre si la fédé ne semble tolérer que les utilisations qui se limitent à un club pourquoi pingpocket.fr fonctionne t-il toujours ? Je me pose la question car je bosse sur quelque chose d'assez similaire xD

Je ne connais pas du tout le fonctionnement de la fédé mais j'ai l'impression que l'ouverture des données est plus un problème politique que technique...

Ils changeront surement le webservice un jour et il faudra s'adapter mais au moins on sera notifié (Mise à jour de Smartping).

En attendant j'ai amélioré mon code pour imiter au mieux le fonctionnement de Smartping: http://pastebin.com/0kguYpKR

Changements:
- Ajout de l'API d'initialisation (avec numéro de série)
- Ajout de la photo, progression mensuelle, progression annuelle des joueurs
- Possibilité de loguer les appels au webservice
- Possibilité de préciser l'IP source (dans le cas d'un serveur disposant de plusieurs IP)
- Utilisation de cUrl au lieu de file_get_contents (Ce dernier ne supporte pas bien HTTP1.1 et Keep-Alive) pour imiter au mieux les requêtes de Smartping

Cette version est virtuellement indétectable par rapport aux requêtes effectuées par Smartping.
N’hésitez pas si vous avez des questions ou remarques sur le code.
Message modifié 1 fois, dernière modification Lundi 14 Avril 2014 02:20 par SMGbab16

Mardi 08 Avril 2014 23:58

Ca il fallait bien que ca arrive, indépendament du fait que les données de smartping soit aspirer ou pas...

Mardi 08 Avril 2014 01:02

Je viens de regarder pingpocket.fr je ne connaissais pas, c'est vraiment pas mal!
Et assez proche de ce que je suis en train de faire au final xD
A part qu'il n'y a pas toute la partie Compétition.
Quelqu'un sait si ça exploite le webservice de Smartping ou alors le parsing du HTML sur le site de la FFTT ?

Mardi 08 Avril 2014 00:20

Citation de robinos33 :
Personnellement, dans mon idée je pense faire un CRON qui récupère ces données mensuellement et les intègre en base de données. Ça limiterai l'accès à cette API et permettrait à la fédé de me laisser tranquille ! Je ne comprend toujours pas que nous soyons obliger de ruser pour faire tout ça et que la fédé ne nous aide pas ...


Oui j'avais dans l'idée de faire ça aussi à terme. En plus de ne plus avoir a interroger le webservice de la fftt à chaque fois ça permettrait de garder les données d'une saison sur l'autre et d'avoir tout un historique pour faire des stats ou simplement retrouver d'anciennes feuilles de match par nostalgie. On pourrait même imaginer un site communautaire avec possibilité de mettre des commentaires sur les résultat des rencontres etc... ^^
C'est quand même un travail assez conséquent. Il faudrait d'abord bien définir le model de donnée pour bien structurer tout ca, etc... Mais bon c'est un projet interessant sur lequel on pourrait travailler à plusieurs.

En ce qui concerne le risque que la FFTT ferme cet accès je pense qu'il est assez minime car cela empêcherait Smartping de fonctionner. Ensuite contrairement aux pages HTML, ils ne peuvent pas simplement modifier le webservice sans impacter Smartping. Toute modification du webservice doit s'accompagner d'une mise à jour de Smartping ce qui limite les choses.

Pour mon code je n'ai pas précisé mais c'est du PHP5.3 (namespace, closure, ...)
Je suis un fan de Symfony2 et de Doctrine2 dont j'utilise une toute petite partie pour le caching (mais c'est optionnelle ^^).
Sinon il y a une petite correction à apporter a mon code pour récupérer la dernière situation mensuelle:
Ligne 34 il faut remplacer:
Citation de _ :
return Service::getObject(Service::getData('http://www.fftt.com/mobile/xml/xml_joueur.php', array('licence' => $licence)), 'joueur');

par
Citation de _ :
return Service::getObject(Service::getData('http://www.fftt.com/mobile/xml/xml_joueur.php', array('licence' => $licence, 'auto' => 1)), 'joueur');

En gros il faut rajouter le parametre auto=1 dans l'url.
Pour voir la difference: http://www.fftt.com/mobile/xml/xml_joueur.php?licence=9416257
et
http://www.fftt.com/mobile/xml/xml_joueur.php?licence=9416257&auto=1
Message modifié 2 fois, dernière modification Mardi 08 Avril 2014 00:21 par SMGbab16

Dimanche 06 Avril 2014 05:19

Bonjour à tous.
Après avoir lu pas mal de sujets où beaucoup demandent comment accéder aux données de la FFTT (points mensuels, résultat des rencontres, ...) J'ai décidé de partager ce que j'ai trouver et qui en aidera surement plus d'un.
J'ai en effet décortiqué le Webservice utilisé par Smartping pour accéder aux données.
Il s'agit de simples url qui renvoient du XML. Il n'y a aucune authentification ou autre protection.
Exemple pour les données sur un joueur: http://www.fftt.com/mobile/xml/xml_joueur.php?licence=XXX
(Remplacez XXX par un numéro de licence).

J'ai créé une Class en PHP permettant d'accéder à toutes les API que j'ai trouvés
Le code est ici: http://pastebin.com/0kguYpKR
Faites en bon usage ^^

Personnellement je suis en train de développer un site Mobile utilisant cette Class pour remplacer Smartping car je suis lassé de tous ces bugs ^^

Changements

V1.1:
- Ajout de l'API d'initialisation (avec numéro de serie)
- Ajout de la photo, progression mensuelle, progression annuelle des joueurs
- Possibilité de logguer les appels au webservice
- Possibilité de préciser l'IP source (dans le cas d'un serveur disposant de plusieurs IP)
- Utilisation de cUrl au lieu de file_get_contents (Ce dernier ne supporte pas bien HTTP1.1 et Keep-Alive) pour imiter au mieux les requêtes de Smartping
Message modifié 2 fois, dernière modification Lundi 14 Avril 2014 02:06 par SMGbab16

Dimanche 06 Avril 2014 03:18

Pour ceux que ça intéresse j'ai trouvé le webservice utilisé par Smartping. Il s'agit de simples url en accès public qui renvoient du XML.
Etant assez agacé par les bugs Smartping j'ai décider de faire un petit site mobile pour le remplacer. Je donnerai le lien quand il sera fini.

Un petit exemple de l'API pour les intéressés: http://www.fftt.com/mobile/xml/xml_joueur.php?licence=XXX
Remplacez XXX par un numéro de licence

Samedi 05 Avril 2014 13:19

Il pèse combien ?

Mardi 03 Décembre 2013 11:49

Citation de archeo :
Vous confirmez que la 6ème journée de championnat n'est pas prise en compte dans cette situation mensuelle ?


Oui pour certain elle n'est pas prise en compte. Surement que la feuille n'est pas arrivé a temps au comité ou à la ligue et que personne n'a remplie sur internet (c'est obligatoire seulement en régional je crois)
19 messages

Vous êtes ici : Accueil > Forums > Messages de SMGbab16

Résolu