Pipensx-metadata
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...
Choisir une liste...
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 cachetopic_idet 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.