利用者:JuthaDDA/EmbeddingPagesPurger.js

/**
 * このスクリプトは、テンプレート等を参照読込しているページのキャッシュを一括で
 * 破棄するためのものです。
 * 主に画像荒らしを受けたテンプレートへの使用を想定しています。
 * 
 * テンプレートのページを開いた状態で、コンソールに貼り付けて、59行目のコメント
 * アウトを解除してから実行してください。
 * 
 * 重複実行を避けるために、[[利用者‐会話:JuthaDDA/EmbeddingPagesPurger.js]]に
 * 実行記録を残すことを推奨します。
 */
(() => {
"use strict";

const mwApi = new mw.Api();
const title = mw.config.get('wgPageName').replace(/_/g, ' ');
const params = {
  action: 'purge',
  format: 'json',
  generator: 'embeddedin',
  geititle: title,
  geilimit: '10'
};
let count = 1;

const purgeEmbeddings = geicontinue => {
  if (geicontinue) {
    params.geicontinue = geicontinue;
  }

  mwApi.post(params).done(data => {
    console.log(count, data);

    if (data?.continue?.geicontinue) {
      const warning = data?.warnings?.purge['*'];

      if (warning) {
        if ("You've exceeded your rate limit. " + 'Please wait some time and try again.' !== warning) {
          console.log(warning);
          return;
        }

        console.log('APIの上限に達したため、60秒後に再試行します。');
        setTimeout(() => {
          purgeEmbeddings(geicontinue);
        }, 60000);
      } else {
        count++;
        setTimeout(() => {
          purgeEmbeddings(data.continue.geicontinue);
        }, 20000); // APIのリミット回避。閾値は20000弱?
      }
    } else {
      console.log('すべての読み込み元ページのキャッシュ破棄が完了しました。');
    }
  });
};

// purgeEmbeddings();
})();
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya