Pipensx-metadata

i3sey i3sey
Dépôt créer le : 08/07/2026
Forks: 0 Watcher: 0 2
Choisir une liste...
FR

index des métadonnées de pipensx

Construit le sidecar optionnel de métadonnées eShop consommé par pipensx. Langegen reste la source de vérité pour les rejets et les aimants; ce dépôt seulement cartographie ces versions en anglais blawar/titledb artwork et texte.

Le flux de travail programmé vérifie les deux révisions en amont toutes les six heures. Lorsque soit, il publie une version immuable de GitHub contenant:

  • game_metadata_index.json — les enregistrements enregistrés par Langegen info-hash;
  • manifest.json — la version schématique, les révisions sources, le nombre d'octets et SHA-256;
  • match-report.json — couverture, méthodes, rejets ambigus et non appariés;
  • filelists.json — listes de fichiers de RuTracker en cache topic_id et Des infos.

Les dossiers comportent une option players champ — intitulé b numberOfPlayersC'est-à-dire comment Beaucoup de gens peuvent jouer sur une console. Le client y filtre son catalogue (2+ signifie canapé multijoueur) et le montre sur la page de jeu. Le champ est facultatif à l'usage: schemaVersion reste 1, donc un client construit avant lui n'a pas changé la lecture des nouvelles versions.

Une option modes tableau (split, coop, lan, online) vient de l'IGDB multiplayer_modes, la seule source publique qui dit Comment les gens jouent ensemble. IGDB ne porte pas d'identifiants de titre de commutateur, de sorte que la jointure est exactement normalisée les noms ambigus sont signalés, jamais publiés, et peut être épinglé dans igdb_overrides.json (titleId à l'ID du jeu IGDB). Les matches vivent dans les engagés igdb_modes.json cache, donc chaque exécution semble seulement vers le haut des titres qu'il n'a pas vus (--igdb-fetch-limit, lot de 100 noms par demande). Les lettres de créances proviennent IGDB_CLIENT_ID / IGDB_SECRET; sans eux la construction réutilise simplement le cache.

Un jeu IGDB sait mais jamais décrit obtient non modes clé du tout — écrire un tableau vide affirme "pas de multijoueur", et le client lit une clé manquante comme la permission de retomber sur le compte de joueur intituléb. Seulement ~12% de matched titres de transport lignes mode en amont, de sorte que le repli est ce qui maintient le client Filtre "co-op local" utile.

L'appariement est délibérément conservateur: les surcharges de sujet, les IDs de titre extraits à partir des noms de fichiers RuTracker, puis des ID de base intégrés dans le texte de publication, puis le catalogue title_id champ, puis un nom normal, puis un match de nom US eShop Algolia unique pour les ids de titre de catalogue non appariés (assets.nintendo.com art carré). Si une liste de fichiers contient plusieurs bases Titre IDs, le plus grand jeu de fichiers analysé gagne; tailles égales ou inconnues restent ambigu à moins que le catalogue title_id est dans titleb, ou un livré nom du jeu correspond clairement au titre de la version (bonus / pré-commande entrées sont ignorés). Les correspondances de noms transformées et floues sont déclarées comme les suggestions seulement et ne sont jamais publiées automatiquement.

Construction locale

python3 -m unittest discover -s tests -v
python3 build_index.py \
  --langegen https://raw.githubusercontent.com/Langegen/switch-games/refs/heads/main/switch_games.json \
  --titledb https://raw.githubusercontent.com/blawar/titledb/master/US.en.json \
  --langegen-commit local \
  --titledb-commit local \
  --previous-filelists output/filelists.json \
  --output output

La recherche de liste de fichiers en direct nécessite un cookie RuTracker authentifié :

export RUTRACKER_COOKIE='bb_session=...; bb_data=...'
python3 build_index.py ... --require-filelists

Manual workflow exécute force une reconstruction par défaut et publie un unique metadata-...-run- tag de libération, même lorsque les commits en amont ne changer. Le flux de travail récupère au plus 300 nouvelles listes de fichiers RuTracker par run, donc la première la graine se termine à travers plusieurs sorties manuelles ou programmées au lieu d'un silence travail multi-heures. Mise à jour partielle d'une mise à jour séparée filelists-cache Uniquement pour la libération. La normale La publication des métadonnées est publiée en tant que latest seulement après la fin du cache assez pour passer la barrière de régression de couverture.

Les corrections manuelles overrides.json comme topic_id à 16 caractères les cartes d'identité des titres de base. Une application de base a ses bas douze bits clairs, donc son ID se termine dans 000, pas nécessairement 0000.

Contributeurs GitHub

github-actions[bot]
github-actions[bot]
1 contributions
sao05
sao05
17 contributions