lovelyCARDINAL/WikiBots

View on GitHub
src/Clean/purge.js

Summary

Maintainability
A
0 mins
Test Coverage
import { MediaWikiApi } from 'wiki-saikou';
import config from '../utils/config.js';

const api = new MediaWikiApi(config.zh.api, {
    headers: { 'user-agent': config.useragent },
});

(async () => {
    console.log(`Start time: ${new Date().toISOString()}`);
    await api.login(
        config.zh.abot.name,
        config.zh.abot.password,
        undefined,
        { retry: 25, noCache: true },
    ).then(console.log);

    const { data: { query: { pages: [{ revisions: [{ content }] }] } } } = await api.post({
        prop: 'revisions',
        titles: 'User:星海子/BotConfig/purge.json',
        rvprop: 'content',
    });
    const setting = JSON.parse(content || '{}');

    await Promise.all([
        Promise.all(setting.group.map(async ({ prefix, ns }) => {
            await api.post({
                action: 'purge',
                generator: 'allpages',
                gapprefix: prefix,
                gapnamespace: ns,
                gaplimit: 'max',
            }, {
                retry: 15,
            }).then(({ data }) => console.log(JSON.stringify(data)));
        })),
        api.post({
            action: 'purge',
            titles: setting.page,
        }, {
            retry: 15,
        }).then(({ data }) => console.log(JSON.stringify(data))),
    ]);

    console.log(`End time: ${new Date().toISOString()}`);
})();