משתמש:מוטי בוט/עדכון תבניות.js
מראה
לתשומת ליבך: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
//התשתית לסקריפט נכתבה ע"י גאון הירדן שופץ ע"י מוטי
async function getlist() {
const linkToList = [
"https://www.hamichlol.org.il/w/index.php",
"?title=משתמש:מוטי_בוט/רשימה_לעדכון.json&action=raw",
];
const result = await fetchData(linkToList[0], linkToList[1]);
getTimestamp(result.titles.join("|"));
}
async function fetchData(api, queryString) {
const response = await fetch(`${api}${queryString}`);
return await response.json();
}
async function getTimestamp(list) {
const queryString = `?action=query&format=json&prop=info&titles=${list}&utf8=1`;
let localData = await fetchData(
`https://www.hamichlol.org.il/w/api.php`,
queryString
);
let wikiData = await fetchData(
`https://import.hamichlol.org.il/api.php`,
queryString
);
localData = Object.values(localData.query.pages);
wikiData = Object.values(wikiData.query.pages);
for (let index = 0; index < localData.length; index++) {
const i = wikiData.findIndex((obj) => obj.title === localData[index].title);
if (
compareTimestamps(localData[index].touched, wikiData[i].touched)
) {
await updatePage(localData[index].title);
}
}
setCookie("update", "auto", 8);
}
function compareTimestamps(localtimestamp, wikitimestamp) {
const localDate = new Date(localtimestamp);
const wikiDate = new Date(wikitimestamp);
// Rest of the code
return localDate < wikiDate;
}
async function updatePage(title) {
const apiEndpoint =
"https://import.hamichlol.org.il/?action=parse&page=" +
encodeURIComponent(title) +
"&format=json&prop=wikitext|revid&origin=*";
const response = await fetch(apiEndpoint);
const result = await response.json();
const txt = result.parse.wikitext["*"].replace(
"הנתונים בתבנית מתעדכנים אוטומטית מדי יום על ידי הבוט [[משתמש:sapper-bot]].",
"הנתונים בתבנית מבוססים על עדכון יומי של בוט [[w:he:משתמש:sapper-bot]]."
);
const girsa = result.parse.revid;
const summary = "עדכון מוויקיפדיה גרסה " + girsa;
await saveFunction(title, txt, summary);
}
async function saveFunction(title, txt, summary) {
$.post(
mw.util.wikiScript("api"),
{
action: "edit",
format: "json",
bot: 1,
title: title,
text: txt,
token: mw.user.tokens.get("csrfToken"),
summary: summary,
},
(data) => {
//console.table(data.edit);
//console.log(data.edit.nochange);
if (data && data.edit && data.edit.newtimestamp) {
mw.notify("עודכנה בהצלחה", {title: title, type: 'success'});
} /*else if (data && data.edit && data.edit.nochange === "") {
mw.notify("ב" + title + " אין מה לעדכן");
}*/
console.log(data);
}
);
}
function setCookie(cname, cvalue, exdays) {
const d = new Date();
d.setTime(d.getTime() + exdays * 60 * 60 * 1000);
let expires = "expires=" + d.toUTCString();
document.cookie = `${cname}=${cvalue};${expires};path=/`;
}
var Cookies = document.cookie;
var Cookie = /update/;
var existCookie = Cookie.test(Cookies);
if (
mw.config.get("wgUserGroups").indexOf("עורך_אספקלריה") !== -1 &&
!existCookie
) {
getlist();
} else {
console.log("עוד לא עברו 24 שעות מעדכון קודם!");
}