משתמש:בוט גאון הירדן/category.js
מראה
לתשומת ליבך: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
$(async () => {
async function isProtectedOrDeleted(pageName) {
try {
const res = await fetch(
"/w/api.php?action=query&prop=info|revisions&titles=" +
pageName +
"&indexpageids= true&rvlimit=1&rvprop=size|ids&list=logevents&inprop=protection&letype=delete&letitle=" +
pageName +
"&format=json"
);
const json = await res.json();
if (
json.query?.logevents?.[0] ||
json.query.pageids[0] !== "-1" ||
json.query?.pages["-1"]?.protection?.[0]
) {
return true;
}
return false;
} catch (error) {
console.log(error);
return true;
}
}
function importCategory(title, text) {
//שמירה
if (confirm("תוכן הקטגוריה בויקיפדיה הוא:\n " + text + "\nלייבא?")) {
$.post(
mw.util.wikiScript("api"),
{
action: "edit",
format: "json",
bot: 1,
title,
text,
watchlist: "unwatch",
token: mw.user.tokens.get("csrfToken"),
summary: "ייבוא מוויקיפדיה העברית, ראה רשימת התורמים",
tags: "wikiimport"
},
function (data, status) {
mw.notify("\nStatus: " + status);
}
).done(function () {
if (mw.config.get("wgNamespaceNumber") === 14) location.reload();
});
} else {
//ללא ייבוא
alert("הייבוא לא יתבצע");
}
}
if (
mw.config.get("wgNamespaceNumber") === 14 &&
location.href.indexOf("redlink=1") > -1
) {
const pagename = mw.config.get("wgPageName");
if (await isProtectedOrDeleted(pagename)) return;
const apiEndpoint =
"https://import.hamichlol.org.il/?action=parse&page=" +
encodeURIComponent(pagename) +
"&format=json&prop=wikitext|revid&origin=*";
/**
* Send the request to get the text
*/
fetch(apiEndpoint)
.then((response) => response.json())
.then(function (result) {
if (result && result.parse) {
if (!result.parse.wikitext["*"]) return;
importCategory(result.parse.title, result.parse.wikitext["*"]);
}
})
.catch((error) =>
mw.notify("אירעה שגיאה בשאיבת התוכן. תיאור השגיאה הוא: " + error)
);
}
if (
((mw.config.get("wgPageName") !== "עמוד_ראשי" &&
mw.config.get("wgNamespaceNumber") === 0) ||
mw.config.get("wgNamespaceNumber") === 14) &&
mw.config.get("wgAction") === "view"
) {
document
.querySelectorAll("#mw-normal-catlinks > ul > li > a.new")
.forEach(async (el) => {
const nameCat = el.innerText;
if (await isProtectedOrDeleted(`קטגוריה:${nameCat}`)) return;
console.log(nameCat);
const pointb = "https://import.hamichlol.org.il/?";
const dataWi = {
action: "parse",
page: "קטגוריה:" + nameCat,
format: "json",
prop: "wikitext",
utf8: "1",
origin: "*",
};
$.ajax({
url: pointb,
data: dataWi,
dataType: "json",
})
.done((result) => {
if (result && result.parse) {
const textpage = result.parse.wikitext["*"];
if (!textpage) return;
importCategory(result.parse.title, textpage);
}
})
.fail(function (request, exception) {
// Our error logic here
var msg = "";
if (request.status === 0) {
msg = "Not connect.\n Verify Network.";
} else if (request.status == 404) {
msg = "Requested page not found. [404]";
} else if (request.status == 418) {
msg = "הייבוא או העדכון נחסם על ידי ספק הרשת";
} else if (request.status == 500) {
msg = "Internal Server Error [500].";
} else if (exception === "parsererror") {
msg = "Requested JSON parse failed.";
} else if (exception === "timeout") {
msg = "Time out error.";
} else if (exception === "abort") {
msg = "Ajax request aborted.";
} else {
msg = "Uncaught Error.\n" + request.responseText;
}
mw.notify(msg);
});
});
}
});