תוכן שנמחק תוכן שנוסף
שורה 236:
:שלום [[User:איש עיטי|איש עיטי]], אתה מוזמן להציע איחוד או מחיקה ב[[שיחה:כיכר אדם|דף השיחה]] של הערך. בהצלחה! [[משתמש:מושך בשבט|מושך בשבט]] - [[שיחת משתמש:מושך בשבט|שיחה]] 17:45, 30 ביולי 2021 (IDT)
::תודה[[משתמש:איש עיטי|אשר חכמים יגידו]] - [[שיחת משתמש:איש עיטי|שיחה]] 21:56, 31 ביולי 2021 (IDT)
== API ==
{{הועבר|מ=ויקיפדיה:דלפק ייעוץ}}
 
שלום וברכה, לפני מספר חודשים {{א|שמוליק}} כתב בשבילי קוד לבוט להעלאת ספרים לוקייקטסט (מצ"ב), בינתיים השתמשתי בו להעלאת אלפי דפים לויקיטקסט ו[[אוצר הספרים היהודי השיתופי]], ויש לי 2 שאלות:
 
1. איך אפשר לעשות שהבוט ימחק טקסט שהעליתי מהדף שמוגדר כ"{{כתב מחוק|main}}orginal"?
 
2. יש שורה שאפשר להוסיף לבוט שאם הדף קיים הוא יחליף את התוכן שלו בתוכן המבוקש?
 
תיוג: {{א|ערן}}, [[משתמש:BDaniel]] [[משתמש:Benialon]] [[משתמש:DaCurse0]] [[משתמש:דג בלי מלח]] [[משתמש:החבלן]] [[משתמשת:Saifunny]] {{בעלי ידע/בוטים}} {{בעלי ידע/ויקיזציה ותמיכה}}
 
תודה רבה!
{{טבלה מוסתרת|כותרת=הקוד לבוט|תוכן=<source lang=js>
(function(){
var MAIN = 'שם הספר'
var SUMMARY = 'העלאה אוטומטית'
var ORIGINAL = 'שם הדף בו נמצא טקסט הספר'
var NIVUTELYON = '{{תבנית ניווט בתחילת הדף}}\n'
var NIVUTTACHTON = ''
 
var api = new mw.Api()
 
api.get( {
action: 'parse',
page: ORIGINAL,
prop: 'wikitext',
} ).done( function ( o ) {
var text = o.parse.wikitext['*']
text.split(/הזנה אוטומטית/).forEach(function(p,i){
var s = p.match(/^\s+(.*?)\n(.*)$/s); // fixed
if (s){
api.create(MAIN+'/'+s[1],
{ summary: '[[ויקיטקסט:העלאה אוטומטית|יצירה אוטומטית מטקסט בנחלת הכלל (ספריא) + התאמה]]', bot:true},
NIVUTELYON+s[2].trim()+NIVUTTACHTON
).done(function(){console.log([i,'created', s[1]])})
.fail(function(e){console.log([i, 'failed', s[1],e])});
}
})
} );
})();
</source>}} [[משתמש:מושך בשבט|מושך בשבט]] - [[שיחת משתמש:מושך בשבט|שיחה]] 09:47, 13 ביוני 2021 (IDT)
:[[משתמש:מושך בשבט|מושך בשבט]], נראה שהסקריפט לוקח דף קיים ומפצל אותו להרבה דפים. אם אתה רוצה לבצע בדיקה האם הדף כבר קיים, אתה צריך שאילתת api.get נוספת עם שם הדף הרלוונטי. לבצע החלפות טקסטואליות על התוכן אתה יכול עם הפונקציה replace של ג'אווהסקריפט, למשל אחרי שאתה חותך רווחים (s[2].trim()). לצערי אני עמוס ולא יכול להתחיל להתעסק בקוד הזה בעצמי. בברכה,[[משתמש:Uziel302|&#32;Uziel302]] - [[שיחת משתמש:Uziel302|שיחה]] 19:17, 14 ביוני 2021 (IDT)
::יש לי ספק שהתיאור מדויק. הטקסט שהעלית לא נמצא בדף שנקרא MAIN, אלא ORIGINAL, ולכן מהחלק שמדבר על מחיקה התעלמתי. לגבי שינוי תוכן הדף אם הוא קיים במקום יצירת דף חדש, נסה להחליף את השורה {{קוד|.fail(function(e){console.log([i, 'failed', s[1],e])});}} בקטע הבא.
::שים לב - לא בדוק!!, והבדיקה עליך:
<syntaxhighlight lang="javascript">
.fail(function() {
api.postWithToken('edit',
{
action: 'edit',
title: MAIN + '/' + s[1],
bot: 1,
text: NIVUTELYON+s[2].trim()+NIVUTTACHTON,
summary: '[[ויקיטקסט:העלאה אוטומטית|יצירה אוטומטית מטקסט בנחלת הכלל (ספריא) + התאמה]]'
});
})
.done(function(){console.log([i,'page already existed. content changed', s[1]])})
.fail(function(e){console.log([i, 'failed to change page content', s[1], e])});;
</syntaxhighlight>
::כאמור, לא בדוק. ההכי הטוב לחכות לשמוליק. [[שיחת משתמש:קיפודנחש|קיפודנחש]] 02:07, 15 ביוני 2021 (IDT)
:::{{א|קיפודנחש}}, ממש תודה! אשמח אם תוכל להתייחס לשאלה לגבי המחיקה (תיקנתי אותה) --[[משתמש:מושך בשבט|מושך בשבט]] - [[שיחת משתמש:מושך בשבט|שיחה]] 22:18, 24 ביוני 2021 (IDT)
::::צר לי, אבל זה גדול עלי. תצטרך לחכות ל[[משתמש:שמוליק]], ועד שהוא יושיע, למחוק ביד. שבת שלום. [[שיחת משתמש:קיפודנחש|קיפודנחש]] 23:54, 24 ביוני 2021 (IDT)
::::: אולי משהו כזה, {{טבלה מוסתרת|כותרת=הקוד לבוט|תוכן=<source lang=js>
(function(){
var MAIN = 'שם הספר'
var SUMMARY = 'העלאה אוטומטית'
var ORIGINAL = 'שם הדף בו נמצא טקסט הספר'
var NIVUTELYON = '{{תבנית ניווט בתחילת הדף}}\n'
var NIVUTTACHTON = ''
 
var api = new mw.Api()
 
api.get( {
action: 'parse',
page: ORIGINAL,
prop: 'wikitext',
} ).done( function ( o ) {
var text = o.parse.wikitext['*']
var parts = text.split(/הזנה אוטומטית/)
var counter = 0;
for (var i = 0; i < parts.length; i++) {
var p = parts[i];
var s = p.match(/^\s+(.*?)\n(.*)$/s); // fixed
if (s){
api.create(MAIN+'/'+s[1],
{ summary: '[[ויקיטקסט:העלאה אוטומטית|יצירה אוטומטית מטקסט בנחלת הכלל (ספריא) + התאמה]]', bot:true},
NIVUTELYON+s[2].trim()+NIVUTTACHTON
).done(function(){console.log([i,'created', s[1]]); parts[i]='הועבר';})
.fail(function(e){console.log([i, 'failed', s[1],e]);})
.always(function(){
counter++;
if (counter == parts.length){
api.postWithToken('edit',
{
action: 'edit',
title: ORIGINAL,
bot: 1,
text: parts.join('הזנה אוטומטית'),
summary: '[[ויקיטקסט:העלאה אוטומטית|יצירה אוטומטית מטקסט בנחלת הכלל (ספריא) + התאמה]]'
});
}
})
}
}
} );
})();
</source>}}
::::: לא בדק, לא וידא, לא מעודכן ב-JS מודרני, [[משתמש:שמוליק|שמוליק]] - [[שיחת משתמש:שמוליק|שיחה]] 08:44, 27 ביוני 2021 (IDT)
:::::: {{א|מושך בשבט}}? [[משתמש:שמוליק|שמוליק]] - [[שיחת משתמש:שמוליק|שיחה]] 20:35, 7 ביולי 2021 (IDT)
:::::::ניסיתי להריץ:
:::::::{{טבלה מוסתרת|כותרת=קוד לבוט קל"ח פתחי חכמה|תוכן=<source lang=js>
:::::::(function(){
::::::: var MAIN = 'קל"ח פתחי חכמה'
::::::: var SUMMARY = 'העלאה אוטומטית'
::::::: var ORIGINAL = 'טיוטה:קל"ח'
::::::: var NIVUTELYON = '{{קל"ח פתחי חכמה}}\n'
::::::: var NIVUTTACHTON = ''
::::::: var api = new mw.Api()
::::::: api.get( {
::::::: action: 'parse',
::::::: page: ORIGINAL,
::::::: prop: 'wikitext',
::::::: } ).done( function ( o ) {
::::::: var text = o.parse.wikitext['*']
::::::: var parts = text.split(/הזנה אוטומטית/)
::::::: var counter = 0;
::::::: for (var i = 0; i < parts.length; i++) {
::::::: var p = parts[i];
::::::: var ss = p.match(/^\s+(.*?)\n(.*)$/s); // fixed
::::::: if (ss){
function(s){
::::::: api.create(MAIN+'/'+s[1],
::::::: { summary: '[[ויקיטקסט:העלאה אוטומטית|יצירה אוטומטית מטקסט בנחלת הכלל (ספריא) + התאמה]]', bot:true},
::::::: NIVUTELYON+s[2].trim()+NIVUTTACHTON
::::::: ).done(function(){console.log([i,'created', s[1]]); parts[i]='הועבר';})
::::::: .fail(function(e){console.log([i, 'failed', s[1],e]);})
::::::: .always(function(){
::::::: counter++;
::::::: if (counter == parts.length){
::::::: api.postWithToken('edit',
::::::: {
::::::: action: 'edit',
::::::: title: ORIGINAL,
::::::: bot: 1,
::::::: text: parts.join('הזנה אוטומטית'),
::::::: summary: '[[ויקיטקסט:העלאה אוטומטית|יצירה אוטומטית מטקסט בנחלת הכלל (ספריא) + התאמה]]'
::::::: });
::::::: }
::::::: })
}(ss);
::::::: }
::::::: }
::::::: } );
:::::::})();
:::::::</source>}}
:::::::והתוצאה הייתה הרבה פעמים <source lang=js>[139, "failed", "פתח קלח", "articleexists"]</source>. @[[משתמש:שמוליק|שמוליק]] [[משתמש:מושך בשבט|מושך בשבט]] - [[שיחת משתמש:מושך בשבט|שיחה]] 22:21, 18 ביולי 2021 (IDT)
:::::::: ראה [http://פה https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures]. ניסיתי לתקן לעיל. נראה לי שכבר שאלת על זה איפשהו וכבר תיקנתי את זה [[משתמש:שמוליק|שמוליק]] - [[שיחת משתמש:שמוליק|שיחה]] 22:51, 18 ביולי 2021 (IDT)
:::::::::{{א|שמוליק}},
:::::::::<source lang=js>
:::::::::Uncaught SyntaxError: Function statements require a function name
:::::::::</source> [[משתמש:מושך בשבט|מושך בשבט]] - [[שיחת משתמש:מושך בשבט|שיחה]] 23:06, 18 ביולי 2021 (IDT)
:::::::::: צריך להוריד את כל הנקודותיים מתחילת השורות. [[משתמש:שמוליק|שמוליק]] - [[שיחת משתמש:שמוליק|שיחה]] 09:03, 19 ביולי 2021 (IDT)
:::::::::::{{א|שמוליק}}, הורדתי, זה לא עובד:
{{טבלה מוסתרת|כותרת=הקוד לבוט|תוכן=<source lang=js>
(function(){
var MAIN = 'ערך'
var SUMMARY = 'העלאה אוטומטית'
var ORIGINAL = 'טיוטה:הון יוסף'
var NIVUTELYON = '{{ניווט כללי עליון}}\n{{הועלה אוטומטית}}\n'
var NIVUTTACHTON = '\n{{ניווט כללי תחתון}}\n[[קטגוריה:הון יוסף]]'
var api = new mw.Api({
action: 'parse',
page: ORIGINAL,
prop: 'wikitext',
} ).done( function ( o ) {
var text = o.parse.wikitext['*']
var parts = text.split(/הזנה אוטומטית/)
var counter = 0;
for (var i = 0; i < parts.length; i++) {
var p = parts[i];
var ss = p.match(/^\s+(.*?)\n(.*)$/s); // fixed
if (ss){
(function(s){
api.create(MAIN+'/'+s[1],
{ summary: 'יצירת הערך מספר הון יוסף + התאמה לאוצר', bot:true},
NIVUTELYON+s[2].trim()+NIVUTTACHTON
).done(function(){console.log([i,'created', s[1]]); parts[i]='הועבר';})
.fail(function(e){console.log([i, 'failed', s[1],e]);})
.always(function(){
counter++;
if (counter == parts.length){
api.postWithToken('edit',
{
action: 'edit',
title: ORIGINAL,
bot: 1,
text: parts.join('הזנה אוטומטית'),
summary: '[[יצירת הערך מספר הון יוסף + התאמה לאוצר]]'
});
}
})
})(ss);
}
}
} );
})();
</source>}} והשגיאה: Uncaught SyntaxError: Unexpected token ':' [[משתמש:מושך בשבט|מושך בשבט]] - [[שיחת משתמש:מושך בשבט|שיחה]] 18:31, 30 ביולי 2021 (IDT)
:::::::::::{{א|מושך בשבט}} אולי עכשיו? [[משתמש:שמוליק|שמוליק]] - [[שיחת משתמש:שמוליק|שיחה]] 20:00, 30 ביולי 2021 (IDT)
::::::::::::{{א|שמוליק}},
::::::::::::VM3510:11 Uncaught TypeError: (intermediate value).done is not a function
:::::::::::: at <anonymous>:11:9
:::::::::::: at <anonymous>:42:3
:::::::::::::( [[משתמש:מושך בשבט|מושך בשבט]] - [[שיחת משתמש:מושך בשבט|שיחה]] 22:49, 31 ביולי 2021 (IDT)
{{סוף העברה}}