[Demande d’API] Anatools : outils communautaires

Forum > Vos idées et propositions > [Demande d’API] Anatools : outils communautaires

Première page Page précédente 1/1 Page suivante Dernière page

Myst de Pandasthan Unifié
Avatar
Généralissime
42e 
Black Aube
[Demande d’API] Anatools : outils communautaires
24/10/26 22:20

Bouh !


Je vous présente Anatools, une série de petits outils pour la communauté, construits à partir des données publiques d'Anathas :


I. Données et classements :


  • Anaclassement : l'évolution du classement, par joueur et par alliance, cycle après cycle. Graphique avec survol, filtres par période, statuts (vacances, supprimés pour inactivité) et liste des membres d'une alliance.
  • Anarchives : la mémoire des parties, avec tous les comptes et toutes les alliances, actuels et archivés, les changements de nom, les profils liés d'un même joueur entre les parties, et la chronologie du jeu.
  • Anabadges : les badges de chaque compte, et à l'envers, qui porte tel badge.


II. Simulateurs WIP :

(à prendre avec des pincettes pour le moment)


III. Anapi

Anapi regroupe les données des différents outils précédents. Elle peut servir à un bot Discord, à un outil d'alliance, à monter d'autres projets, etc. Les données sont rafraîchies à chaque cycle. Je pense que ça peut être complémentaire à l'API officielle d'ARRG puisque certaines données sont uniquement sur Anatools.

Elle est prête : il suffira d'en demander l'accès.


Pourquoi le projet Anatools est utile ?


À la différence du classement ingame, Anatools simplifie le filtrage et l'accès aux données de toutes les parties.


Pour l'instant tout repose sur la lecture des pages publiques du jeu une fois par cycle + le fetch de toutes les urls de type https://www.anathas.com/infos.php?ID=X pour les comptes et https://www.anathas.com/alliance/alliance.php?show=x pour les alliances. Il me manque de l'antériorité sur la partie actuelle et sur les parties précédentes.


Avec l'API v2, je voudrais passer à des appels propres : moins de charge pour le site, des données plus fiables et un relevé par cycle via stats/latest. Usage prévu : un appel par cycle pour les classements (pays et alliances).


TODO

  • Ajouter des événements/accomplissements sur le graphique du classement : guerres, création ou changement d'alliance, changements de nom, date d'inscription à la partie en cours. Tout ça à partir de la chronologie notamment pour créer une timeline que l'on peut survoler et ainsi comprendre les fluctuations au classement.
  • L'historique des alliances et qui a présidé quoi et quand pendant une partie.
  • Améliorer les simulateurs.
  • Lister les événements de la chronologie, les guerres, etc et pouvoir filtrer et rechercher dans ces informations.
  • L'archivage du texte complet des fiches de pays et d'alliances (histoire, organisation, relations), pour garder une trace même si la fiche change (à voir si ok avec les joueurs).
  • Explorer la possibilité d’un MCP pour pouvoir interroger les données avec une IA ?
  • (re)Création d’un script Grenade/violent monkey pour rajouter de petits éléments pratiques pour simplifier la gestion de cycles.


Avec l'API :

  • Compléter les données de la partie en cours.
  • Les classements cycle par cycle des parties précédentes, avec les courbes de toutes les parties.
  • Générer des podiums par partie pour proposer de compléter les badges qui existent déjà : plus gros score, plus grand territoire, plus de temps top1, guerres les plus longues, alliances les plus durables, etc.
  • Pouvoir comparer ses propres parties : où en étais-tu à ce stade sur la partie précédente ? Permet d'avoir des repères réalistes.
  • Les fiches de nations et leurs anciennes nations reliées sur toutes les parties, avec la chronologie de chaque joueur et score cumulé sur ses différentes parties.


Autres infos

Le code n'est pas public mais je donnerai volontiers l'accès au dépôt GitHub à qui le demande pour checker, créer des issues ou proposer des PRs.


Les outils restent ouverts à tous. Les retours et les idées sont les bienvenus.

Myst de Pandasthan Unifié
Avatar
Généralissime
42e 
Black Aube
Last/first : idée Anashootbox
25/10/26 8:25

Petite idée via l’API : filtrer sur la shoutbox pour faire un leaderboard des last/first réussis par cycle. Ça devrait être assez facile à faire avec les données.

ARRG de Arche Kingdom
Avatar
Du bois? Merci
54e 
La Triade
C'est cool Myst!
26/10/26 20:46

C'est cool Myst!


Par contre c'est pas clair pour moi ce que tu attends de l'API puisque tu as l'air de faire ça avec du scraping

Myst de Pandasthan Unifié
Avatar
Généralissime
42e 
Black Aube
Bah ce serait plus propre via l’API et ça me permettrait d’ajouter l’histor...
26/10/26 20:51

Ce serait plus propre via l’API et plus officiel ?


Je pense que tu dois avoir des données mieux structurées et l’antériorité qui me permettrait d’ajouter l’historique aussi de ce que je n’ai pas scrappé. Voir de faire pareil pour les parties anciennes par exemple ?


Pout les crampons, j’ai juste fait ça sur les pages dispo sans login histoire que ça reste clean. Mais comme tu proposais aussi de revoir les profils et data à l’avenir, ça serait moins de taff d’actualiser en fonction de l’API plutôt que de refaire le scrapping je pense.


Apres je peux te lister ce dont j’aurais besoin si c’est plus clair.

ARRG de Arche Kingdom
Avatar
Du bois? Merci
54e 
La Triade
Oui c'est surtout ça, dis moi ce qui manque et on part de là [NT]
26/10/26 21:24

Oui c'est surtout ça, dis moi ce qui manque et on part de là

Myst de Pandasthan Unifié
Avatar
Généralissime
42e 
Black Aube
Voici mes premiers retours
27/10/26 22:15

Merci pour la clé ! Voici mes retours complets. Le site est toujours dispo ici : https://anatools.bonjour-242.workers.dev


Ce qui a évolué depuis la semaine dernière

  • Finalement j'ai réorganisé et fusionné les outils en une seule interface commune et moins de séparations arbitraires.
  • J'ai enrichi l'affichage des événements (guerres, alliances, renommages, etc) qui sont désormais placés comme des repères sur les courbes en fonction des événements des joueurs et alliances sélectionnées dans les tableaux.
  • J'ai ajouté un sélecteur de partie dans le header qui s'applique à toutes les pages (partie en cours / toutes les parties / ou une ancienne partie spécifique), c'est plus clair que de mélanger avec tous les filtres.
  • Et de nouvelles pages en préparations : top ping/pong, top shoutbox (first/last notamment), top forum et autres podiums.


L’API v2 est implémentée (et c’est top)

J'utilise Cloudlare sur lequel j'ai un worker qui interroge l’API quelques minutes après chaque cycle (5 h et 20 h). Voilà ce j'ai testé et qui fonctionne déjà en ligne :

  • /games/current/countries : toutes les nations (115 à date) sont appelés en une seule requête (id, name, ruler_name, rank, score, population, land_size, alliance_id). Plus besoin de gérer la pagination, la liste est complète.
  • /games/current/countries/{id} : fiche complète en JSON, avec vacances et description. Elle remplace ma lecture de infos.php pour les comptes en cours.
  • /games/current/alliances et /alliances/{id} : liste le président, le nombre de membres, la description de l'alliance, la liste des membres.
  • /games/current/stats et /stats/{tour} : permet de récupérer les datas des cycles depuis le début de la partie, 44 champs chacun.


Grâce à ça, j’ai pu récupérer la liste exacte des joueurs en vacances, les statistiques précises par cycle, gérer les cycles bugués et les redater correctement les cycles suivants, récupérer la liste complète des merveilles par états et types et je peux déduire de façon plus précise les combats à chaque cycle et surtout les résultats avant que ce soit dispo dans la Chronologie (suffit de surveiller bonheur pour la déduction et les mouvements de territoires, ce que l'on faisait déjà à la mano depuis des années).


Ce que je scrappe encore sur les pages du jeu

  • infos.php?ID=X : badges, anciens pays sur les parties précédentes, image du joueur, compteurs de messages et de likes du forum, type de la merveille, matériau (mais ne sert plus ?) et les infos militaires. Relues une fois par jour pour la partie en cours (plus à chaque cycle).
  • alliance/alliance.php?show=X : tag et logo.
  • timeline.php : la chronologie, toutes parties confondues.


Ce qui me manque ou n’est pas complet

  1. Tag en 4 caractères et image de logo des alliances : absents de /alliances et /alliances/{id}.
  2. Le JSON de /countries/ID ne contient aucune image ni lien vers les images, alors que la page affiche /ajax/image.php?type=J&id=9709&v=… (image du joueur)
  3. Historique de la partie en cours : stats/{tour} ne donne que des totaux et des moyennes. Je n’ai pas le rang, le score, la population et l’alliance de chaque pays à chaque tour, donc rien avant mon premier relevé (10 octobre).
  4. Chronologie (guerres terminées, fondations de pays, renommages, alliances créées ou dissoutes) : rien dans la v2, ni pour la partie en cours, ni pour les précédentes.
  5. Dans la fiche d’un pays : badges, anciens pays d’un même joueur (profils liés), compteurs de messages et likes du forum, matériau principal.
  6. Shoutbox : read-shoutbox existait en v1 (boîtes 0, 1 et 2, fromID, untilID). Elle me permettrait le leaderboard des last/first.
  7. Score en flottant : dans /countries, le score est parfois en notation scientifique (3.707624346785e+17 pour le rang 1), moins précis que l’entier de la fiche.
  8. Globalement seule la parties en cours est dans la V2 : l'API ne propose aucune data des parties précédentes et propose uniquement games/current. Pareil pour les comptes archivés : /countries/{id} répond 404 pour un ID d’une autre partie. Serait-il envisageable d'avoir les mêmes stats pour les anciennes parties (même si c'est parcellaire) ?


Questions

  1. wonder.type utilise des valeurs pas forcément claires, tu me confirmes : x = scientifique, h = humaniste, e = économique, c = écologique, g = guerrière, d = diplomatique ? Et pour les suffixes : aucun = en construction, + = merveille, * = grande merveille. Ce qui donne c* pour une grande merveille écologique ? (et null = pas de merveille).
  2. Pollution : une fiche me donne par exemple 1.59 sans unité, alors que la page écrit parfois tCO2/km² et parfois ktCO2. Comment je peux être plus précis ?
  3. wonder.score : c’est la hauteur de la merveille ? (Valeurs vues : jusqu’à 300 en construction, de 400 à 700 pour une merveille, plus de 1 000 pour une grande.)
  4. sum_mmerv_* (statistiques) : que comptent ces 8 compteurs, un stock, une production ? (Ils valent de 77 à 128 par matériau, ce n’est pas le nombre de pays qui en ont.)
  5. habitable_regions est en km² : cette info est-elle censée être disponible ? Car il y a déjà « Habitable : N régions » de la page de profil.
  6. tech_military contient les valeurs de la technologie agricole de la page : le nom du champ est-il le bon ?
  7. Les 4 cycles bugués (27/09 20 h, 28/09 5 h, 29/09 5 h, 02/10 5 h) n’ont pas de tour, c’est voulu ? Ne pourrait on pas avoir un rapport, mais vide ou avec une erreur par exemple pour l'historique ?


Remarques

  •  Aucun en-tête de limite de requêtes dans les réponses de l'API. Quelle limite me conseilles-tu ? Aujourd'hui j'utilise entre 100-150 appels par cycle.
  • Les 404 renvoient un JSON {"error":"…"}, merci c’est pratique !


Première page Page précédente 1/1 Page suivante Dernière page

Forum > Vos idées et propositions > [Demande d’API] Anatools : outils communautaires


Pour participer à la communauté, connectez-vous ou créez un compte