Add script for finding duplicate entries
This commit is contained in:
parent
891ca12890
commit
6fc21111aa
3 changed files with 32 additions and 0 deletions
|
@ -8,3 +8,6 @@ trim_trailing_whitespace = true
|
||||||
|
|
||||||
[*.{json,md,yaml,yml}]
|
[*.{json,md,yaml,yml}]
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
|
[data/wiki-game-cache.yaml]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
"schema:normal": "ajv validate -s ./data/schema.yaml -d ./data/manifest.yaml",
|
"schema:normal": "ajv validate -s ./data/schema.yaml -d ./data/manifest.yaml",
|
||||||
"schema:strict": "ajv validate -s ./data/schema.strict.yaml -d ./data/manifest.yaml",
|
"schema:strict": "ajv validate -s ./data/schema.strict.yaml -d ./data/manifest.yaml",
|
||||||
"stats": "ts-node ./src/bin.ts --stats",
|
"stats": "ts-node ./src/bin.ts --stats",
|
||||||
|
"duplicates": "ts-node ./src/bin.ts --duplicates",
|
||||||
"steam": "ts-node ./src/bin.ts --steam"
|
"steam": "ts-node ./src/bin.ts --steam"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
28
src/bin.ts
28
src/bin.ts
|
@ -10,6 +10,7 @@ interface Cli {
|
||||||
wiki?: boolean,
|
wiki?: boolean,
|
||||||
manifest?: boolean,
|
manifest?: boolean,
|
||||||
stats?: boolean,
|
stats?: boolean,
|
||||||
|
duplicates?: boolean,
|
||||||
all?: boolean,
|
all?: boolean,
|
||||||
irregularPathUntagged?: boolean,
|
irregularPathUntagged?: boolean,
|
||||||
skipUntil?: string,
|
skipUntil?: string,
|
||||||
|
@ -52,6 +53,33 @@ async function main() {
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (args.duplicates) {
|
||||||
|
const data: {[key: string]: Array<{ name: string; pageId: number }>} = {};
|
||||||
|
for (const [name, info] of Object.entries(manifest.data)) {
|
||||||
|
const key = JSON.stringify(info);
|
||||||
|
let safe = false;
|
||||||
|
for (const file of Object.keys(info.files ?? {})) {
|
||||||
|
if (file.includes("<game>") || file.includes("<base>")) {
|
||||||
|
safe = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (safe) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!(key in data)) {
|
||||||
|
data[key] = [];
|
||||||
|
}
|
||||||
|
data[key].push({ name, pageId: wikiCache.data[name]?.pageId ?? 0 });
|
||||||
|
}
|
||||||
|
for (const games of Object.values(data)) {
|
||||||
|
if (games.length > 1) {
|
||||||
|
const lines = games.map(({ name, pageId }) => `[${pageId}] ${name}`);
|
||||||
|
console.log(`\nSame manifest entry:\n - ${lines.join("\n - ")}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (args.wiki) {
|
if (args.wiki) {
|
||||||
if (args.recent) {
|
if (args.recent) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue