Kheys
410
modifications
(Début de la doc de l'api jvc.gg) |
|||
Ligne 923 : | Ligne 923 : | ||
*[https://archive.org/details/jeuxvideo.com-pc-et-consoles-5.4.7-apkpure APK 5.4.7] décompilable avec JADX. | *[https://archive.org/details/jeuxvideo.com-pc-et-consoles-5.4.7-apkpure APK 5.4.7] décompilable avec JADX. | ||
*[https://pastebin.com/LWNDQDKy Classe PHP] exploitant l'API (cette classe est incomplète et sera possiblement rendue obsolète dans le temps). | *[https://pastebin.com/LWNDQDKy Classe PHP] exploitant l'API (cette classe est incomplète et sera possiblement rendue obsolète dans le temps). | ||
= API jvc.gg = | |||
Cette API est une API distincte de la ''v4'' et utilisée par la partie Phoenix du site, c'est-à-dire les pages listant les jeux dont la principale est [https://www.jeuxvideo.com/tous-les-jeux/ celle-ci]. Elle est hébergée au sous-domaine [https://api.jvc.gg api.jvc.gg]. | |||
== Préambule == | |||
L'API jvc.gg est basée sur l'utilisation de ''JSON Web Token'' (JWT), un standard utilisé pour créer des jetons de sécurité qui permettent de transférer de l'information de manière sécurisée entre deux parties au format JSON. | |||
Lorsque vous visitez pour la première fois une page Phoenix, le serveur de JVC renvoie une requête comportant un cookie ''accessToken''. La valeur de ce cookie est une chaîne de caractères encodée au format JWT qui contient notamment votre ID de compte et la valeur de votre cookie ''coniunctio''. La fonction Python suivante permet de récupérer le cookie ''accessToken'' en fonction de votre cookie ''coniunctio'' : | |||
<pre> | |||
def get_access_cookie(coniunctio: str) -> str: | |||
cookies = {'coniunctio':coniunctio} | |||
res = requests.get('https://www.jeuxvideo.com/tous-les-jeux/', cookies=cookies) | |||
access_cookie = res.headers['set-cookie'].split(';')[0].replace('accessToken=', '') | |||
return access_cookie | |||
</pre> | |||
Ce cookie vous sera utile lorsque les requêtes envoyées sont destinées à opérer sur votre compte. | |||
== Endpoints == | |||
Le tableau suivant répertorie les ''endpoints'' connus de cette API. Voici la signification de ses colonnes : | |||
*'''PATH''': chemin de l'''endpoint''. | |||
*'''PARAMS, HEADERS''': | |||
** '''param''' : variable entre accolades à remplacer dans l'URL, suivie dans la documentation de son type (''str'' ou ''int''). Par exemple, <code>contents/{contentID}/comments</code> doit être appelé comme suit : <code>contents/123456/comments</code>. | |||
** '''header''' : ''header'' particulier à inclure dans l'en-tête de la requête. Si pas de spécification, l'en-tête ne contient que les ''headers'' de base spécifiés plus haut (''User-Agent'', ''Jvc-Authorization'', etc.). | |||
*'''QUERY''': valeur à ajouter à l'URL permettant si précisée de filtrer les résultats. Par exemple pour les deux query ''page'', ''perPage'' int, l'URL devra être: <code>api.jeuxvideo.com/v4/contents/1234ID/comments?page=1&perPage=30</code> | |||
*'''BODY''': Corps de la requête au format JSON | |||
=== Les paramètres spéciaux === | |||
* Le paramètre <code>{accessToken}</code> devra toujours être remplacé par la valeur du cookie éponyme. | |||
* Le paramètre <code>{gameCategory}</code> peut être remplacée par les valeurs suivantes, qui proviennent évidemment du système de classification de JVC : | |||
** <code>all</code> pour avoir la liste de tous les jeux ; | |||
** <code>awaited</code> pour avoir la liste des jeux attendus ; | |||
** <code>popular</code> pour avoir la liste des jeux populaires ; | |||
** <code>best</code> pour avoir la liste des meilleurs jeux ; | |||
** <code>currentBest</code> pour avoir la liste des meilleurs jeux du moment ; | |||
** <code>releases</code> pour avoir la liste des jeux pas encore sortis. | |||
=== Les queries === | |||
Les ''queries'' renseignent souvent la plateforme, le genre et le mode du jeu. La liste complète des ''queries'' possibles pour ces trois catégories est disponible au format JSON [https://pastebin.com/1LGEibT8 ici]. | |||
Le fichier JSON contenant les <code>id</code> des ''params'' et des ''query strings'' <code>chronicles</code> <code>modes</code> <code>genres</code> <code>events</code> <code>machine</code> <code>categories</code> (obtenu via la requête ''GET config'') est disponible [https://pastebin.com/bnAu6tFL ici]. | |||
Par exemple, si vous souhaitez obtenir la liste des jeux PS4 de genre action RPG et de forme multi en ligne, votre chaîne de ''queries'' devra être <code>platform=ps4&gameGenre=action_rpg&gameMode=multiplayer_online</code>. | |||
De plus, les ''queries'' ''offset'' et ''limit'', de type ''int'', représentent respectivement le numéro du jeu dans la liste à partir duquel les jeux sont listés (par défaut 0) et le nombre du jeu à lister (par défaut 100). | |||
Enfin, le ''query'' ''release'' désigne la date de sortie du jeu, '''compatible seulement avec les catégories <code>best</code> et <code>releases</code>'''. Il peut s'agir d'une année ou d'une décennie (dans ce cas, la valeur du ''query'' représentera la première année de la décennie suivie du caractère 'd' ; par exemple, <code>2010d</code> pour les années 2010). Pour les jeux pas encore sortis, ce ''query'' peut également contenir le mois (par exemple : <code>2024-07</code> pour juillet 2024). Incompatible avec la catégorie <code>currentBest<code>. | |||
=== Liste des endpoints connus === | |||
{| class="wikitable" | |||
|+GET | |||
!PATH | |||
!PARAMS | |||
!QUERY | |||
!DESCRIPTION | |||
|- | |||
|games/{gameCategory}/popularity.desc | |||
| '''gameCategory''' str | |||
|'''platform''' str <br> | |||
'''gameGenre''' str <br> | |||
'''gameMode''' str <br> | |||
'''offset''' int <br> | |||
'''limit''' int <br> | |||
'''release''' int ou str | |||
|Renvoie la liste des jeux de la catégorie <code>{gameCategory}</code> triés par popularité décroissante et satisfaisant les ''queries''. | |||
|- | |||
|games/{gameCategory}/editorialRating.desc | |||
| '''gameCategory''' str | |||
|'''platform''' str <br> | |||
'''gameGenre''' str <br> | |||
'''gameMode''' str <br> | |||
'''offset''' int <br> | |||
'''limit''' int <br> | |||
'''release''' int ou str | |||
|Renvoie la liste des jeux tendances triés par note décroissante des rédacteurs JVC et satisfaisant les ''queries''. | |||
|- | |||
|games/{gameCategory}/releaseDate.asc | |||
| '''gameCategory''' str | |||
|'''platform''' str <br> | |||
'''gameGenre''' str <br> | |||
'''gameMode''' str <br> | |||
'''offset''' int <br> | |||
'''limit''' int <br> | |||
'''release''' int ou str | |||
|Renvoie la liste des jeux attendus triés par date de sortie croissante et satisfaisant les ''queries''. | |||
|- | |||
|games/{gameCategory}/title.asc | |||
| '''gameCategory''' str | |||
|'''platform''' str <br> | |||
'''gameGenre''' str <br> | |||
'''gameMode''' str <br> | |||
'''offset''' int <br> | |||
'''limit''' int <br> | |||
'''release''' int ou str | |||
|Renvoie la liste des jeux attendus triés par titre croissant et satisfaisant les ''queries''. | |||
|} | |||
=Ancienne API (dépréciée) = | =Ancienne API (dépréciée) = |