add-edb-ids: Also handle quests from Category:Missing quest EDB ID

This commit is contained in:
ewin 2025-08-02 20:09:51 -04:00
parent 3aa9a44cae
commit 8e89e05756
Signed by: erin
SSH key fingerprint: SHA256:swjoHhREbZPbWe+gyJNi24d4NAxJSyUIm3fpZj4z3wc
2 changed files with 25 additions and 15 deletions

View file

@ -1,6 +1,6 @@
#!/usr/bin/env node
import {findItemEDBID} from '../lib/api/lodestone.js';
import {findEDBEntryID} from '../lib/api/lodestone.js';
import {getMediawikiClient} from '../lib/config.js';
import {diff} from '../lib/util/diff.js';
import {
@ -34,22 +34,29 @@ function insertInfoboxEDBID (pageContent, edbID) {
const mw = await getMediawikiClient();
// Get pages in the "Missing EDB ID" category from the main article namespace
const itemPagesWithoutEDBIDs = await mw.listCategoryPages('Category:Missing EDB ID', [0], +process.env.LIMIT || 500);
const [itemPagesWithoutEDBIDs, questPagesWithoutEDBIDs] = await Promise.all([
mw.listCategoryPages('Category:Missing EDB ID', [0], +process.env.LIMIT || 500),
mw.listCategoryPages('Category:Missing quest EDB ID', [0], +process.env.LIMIT || 500),
]);
console.log('Processing', itemPagesWithoutEDBIDs.length, 'item pages from [[Category:Missing EDB ID]]\n');
console.log('Processing', questPagesWithoutEDBIDs.length, 'item pages from [[Category:Missing quest EDB ID]]\n');
for (const {title} of itemPagesWithoutEDBIDs) {
for (const {title, type} of [
...itemPagesWithoutEDBIDs.map(({title}) => ({title, type: 'item'})),
...questPagesWithoutEDBIDs.map(({title}) => ({title, type: 'quest'})),
]) {
// this runs serially with an artificial delay between requests to decrease
// the chance of sqenix sending ninjas to my house
await new Promise(resolve => setTimeout(resolve, 1000));
console.log('Page:', title);
// look up on EDB
const edbID = await findItemEDBID(title);
const edbID = await findEDBEntryID(type, title);
if (!edbID) {
console.log('No EDB ID found for this item, skipping');
console.log(`No EDB ID found for this ${type}, skipping`);
continue;
}
console.log('EDB ID:', edbID, `(https://na.finalfantasyxiv.com/lodestone/playguide/db/item/${encodeURIComponent(edbID)})`);
console.log('EDB ID:', edbID, `(https://na.finalfantasyxiv.com/lodestone/playguide/db/${encodeURIComponent(type)}/${encodeURIComponent(edbID)})`);
let originalText;
try {
@ -75,7 +82,7 @@ for (const {title} of itemPagesWithoutEDBIDs) {
// write the new stuff back to the wiki
try {
await mw.editPage(title, updatedText, "Add EDB item ID", true);
await mw.editPage(title, updatedText, `Add EDB ${type} ID`, true);
} catch (error) {
console.error(error);
console.error('writes should not fail, this seems bad, dying now');