only act on pages in article namespace

This commit is contained in:
ewin 2025-07-28 18:35:19 -04:00
parent ceb3df2fdb
commit c86fb77f9e
Signed by: erin
SSH key fingerprint: SHA256:swjoHhREbZPbWe+gyJNi24d4NAxJSyUIm3fpZj4z3wc
2 changed files with 10 additions and 3 deletions

View file

@ -49,8 +49,8 @@ if (!process.env.MW_USERNAME || !process.env.MW_PASSWORD) {
const mw = new MediaWikiClient('https://ffxiv.consolegameswiki.com/mediawiki'); const mw = new MediaWikiClient('https://ffxiv.consolegameswiki.com/mediawiki');
await mw.login(process.env.MW_USERNAME, process.env.MW_PASSWORD); await mw.login(process.env.MW_USERNAME, process.env.MW_PASSWORD);
// Get pages in the "Missing EDB ID" category // Get pages in the "Missing EDB ID" category from the main article namespace
const itemPagesWithoutEDBIDs = await mw.listCategoryPages('Category:Missing EDB ID', +process.env.LIMIT || 500); const itemPagesWithoutEDBIDs = await mw.listCategoryPages('Category:Missing EDB ID', [0], +process.env.LIMIT || 500);
console.log('Processing', itemPagesWithoutEDBIDs.length, 'item pages from [[Category:Missing EDB ID]]\n'); console.log('Processing', itemPagesWithoutEDBIDs.length, 'item pages from [[Category:Missing EDB ID]]\n');
for (const {title} of itemPagesWithoutEDBIDs) { for (const {title} of itemPagesWithoutEDBIDs) {

View file

@ -165,16 +165,23 @@ export class MediaWikiClient {
/** /**
* Gets the list of wiki pages that belong to the given category. * Gets the list of wiki pages that belong to the given category.
* @param {string} name Category name including the `Category:` namespace. * @param {string} name Category name including the `Category:` namespace.
* @param {number[] | '*'} namespaces Integer namespace ID(s) or the string
* `'*'`. If namespace IDs are provided, only pages in those namespaces will
* be returned.
* @param {string} limit Maximum number of items to return. Must be 500 or * @param {string} limit Maximum number of items to return. Must be 500 or
* less. I'm lazy and not supporting API paging so deal with it. * less. I'm lazy and not supporting API paging so deal with it.
* @returns {Promise<{pageid: number; title: string}[]>} * @returns {Promise<{pageid: number; title: string}[]>}
*/ */
async listCategoryPages (name, limit = 50) { async listCategoryPages (name, namespaces = '*', limit = 50) {
if (Array.isArray(namespaces)) {
namespaces = namespaces.join('|');
}
const body = await this.fetchApiGet({ const body = await this.fetchApiGet({
action: 'query', action: 'query',
list: 'categorymembers', list: 'categorymembers',
cmtitle: name, cmtitle: name,
cmlimit: limit, cmlimit: limit,
cmnamespace: namespaces,
}); });
return body.query.categorymembers; return body.query.categorymembers;
} }