שיחת מדיה ויקי:Gadget-wikibugs-patrol-clone.js

תגובה אחרונה: לפני 5 שנים מאת ערן בנושא עזרה בשיפור מיזם הווריאנטים

עזרה בשיפור מיזם הווריאנטים

עריכה
הועבר משיחת משתמש:ערן 10:00, 27 באפריל 2019 (IDT)תגובה

הי ערן, תודה על תגובתך במזנון. מה שלדעתי יקל על התרומה למיזם הוא אפשרות לבצע סינון ראשוני של המילים החשודות, על ידי הסרת פסקאות מרשימה, כפי שהכנת לדף הדיווח על טעויות. בשלב שני אפשר להוסיף את האפשרות להטמיע את התיקון שהתוכנית שלי הציעה, או הזנת תיקון אלטרנטיבי. לא ממש הבנתי איך זה דומה לממשק של הוספת קישורים, במיזם הזה אני מכניס את העריכה המוצעת ושורת ההקשר בדף המיזם, אין צורך בפופאפ מדף הערך. כן אשמח ללמוד איך מטמיעים בכפתור את התיקון המוצע. Uziel302 - שיחה 00:43, 29 במרץ 2019 (IST)תגובה

Uziel302: מה שחשבתי זה לקחת את סקריפט הוספת קישורים מהירה (מדיה ויקי:Gadget-quickLinker.js/שיחת מדיה ויקי:Gadget-quickLinker) ולבנות סקריפט דומה לתיקונים מהירים של טעויות כתיב:
  • הוא צריך להיטען כאשר נכנסים לדף המיזם משתמש:Uziel302/וריאנטים חשודים
  • כשלוחצים על אחת הטעויות הוא מריץ את החיפוש ברקע (הסקריפט בנוי להריץ חיפוש ברקע של כותרת הערך - זה צריך להיות בהתאם לכפתור הנלחץ)
  • עבור כל תוצאה להציג בחלונית את המשפט שבו המילה מופיעה, ואפשרות לתיקון או דילוג.
  • בסיום העבודה למחוק את המילה מדף המיזם
אני אנסה למצוא זמן לכתוב סקריפט כזה. ערן - שיחה 22:36, 29 במרץ 2019 (IDT)תגובה
תודה רבה. בדף המיזם משתמש:Uziel302/וריאנטים חשודים עם הקשר אפשר לראות את שם הערך בו מופיעה המילה וכן את ההצעה לתיקון, אז לא צריך לחפש בכל ויקיפדיה ומספיק לאשר החלפה או לדלג. כרגע מנגנון ההצעות שלי בוסרי והייתי מעדיף אפשרות לתיקון אחר מזה שהוצע. Uziel302 - שיחה 11:45, 30 במרץ 2019 (IDT)תגובה
הייתי מעדיף בשלב ראשון ליישם בעמוד המיזם רק את הפונקציונליות של הסרת פסקאות, ואולי אפילו ארכוב לשיחת הערך. בדומה לסקריפט שרץ בדיווח על טעויות. אמנם זו חצי עבודה, אבל כתיבת השגיאה בדף השיחה של הערך תעודד עוקבים של הערך לבדוק ולבצע את התיקון המדויק. לעומת זאת תיקון בפועל של כל השגיאות ישירות מדף המיזם עצמו מצריך התעמקות ובדיקה שלא מדובר בציטוט ושהתיקון אכן מדויק להקשר. מה דעתך לעשות העתק הדבק לסקריפט של דיווח על טעויות? את המבנה של הרשימה אני יכול לשנות לפי צורך. Uziel302 - שיחה 11:54, 30 במרץ 2019 (IDT)תגובה
הכנסתי כמה דוגמאות בתחילת עמוד דיווח על טעויות. למעשה אני יכול להכניס הכל שם אבל זה יכביד על המערכת. מעדיף עותק נפרד של דיווח על טעויות - וריאנטים. לשם כך ביקשתי הרשאה לעריכת JS, טרם קיבלתי התייחסות בוק:במ. תודה. Uziel302 - שיחה 21:31, 30 במרץ 2019 (IDT)תגובה
Uziel302 על מנת לעבוד על קוד JS אין צורך בהרשאות מיוחדות - עובדים עליו במיוחד:הדף שלי/common.js וכאשר הוא הקוד מוכן אפשר יהיה להעביר אותו למרחב ציבורי. אני אפילו לא בטוח עדיין איפה המקום הנכון במרחב הציבורי בעקבות שינויים אחרונים שערך קיפודנחש ואפשר למצוא בפסקה הבאה - יכול להיות שזה יהיה מועמד טוב להשתמש במנגנון הזה כשיהיה סקריפט כזה. אגב מה ההקשר של דיווח על טעויות? אני חושב שהסקריפט הזה פחות רלוונטי כאן כי הוא לא עורך ערכים קיימים אלא מוסיף פסקאות בדפי דיווח. ערן - שיחה 22:55, 30 במרץ 2019 (IDT)תגובה
עוד לפני שמיישמים מערכת שמתקנת אוטומטית, ניתן לבצע תיקונים ידנית. אחד הקשיים שלי הוא לסנן תיקונים שהם false positives. קושי נוסף הוא לגרום לעורכים שמתקנים במיזם למחוק את הווריאנטים החשודים שנבדקו. אם התיקונים שהסקריפט שלי מציע יהיו בנויים בפורמט של דף הדיווח על טעויות, יהיה קל ללחוץ הסר על כל טעות שנבדקה. לצורך המחשה הכנסתי מספר דיווחים בתחילת דף דיווח על טעויות.
לגבי כתיבת הקוד בדף שלי, כרגע אני מבקש לשכפל קוד קיים של הסרת פסקאות בדף דיווח טעויות, בסך הכל רוצה ליצור עמוד מקביל שיכיל את הפונקציונליות של הסרת פסקה בקליק, ויקיפדיה:דיווח על טעויות/וריאנטים חשודים. תודה. Uziel302 - שיחה 04:50, 31 במרץ 2019 (IDT)תגובה
בתור התחלה יצרתי את ויקיפדיה:דיווח על תקלדות. Uziel302 - שיחה 10:16, 2 באפריל 2019 (IDT)תגובה
אני מעט סקפטי שזה באמת יעזור לעורכים אחרים וימשוך אותם להשתתף במיזם כי זה עדיין מצריך לא מעט עבודה ידנית לכל תיקון בודד. ערן - שיחה 21:11, 2 באפריל 2019 (IDT)תגובה
אכן על החלק של התיקונים זה לא מקל משמעותית, אבל את החלק של הסרת false positives זה הופך ללחיצת כפתור. הסרתי אפילו את תקציר העריכה בהסרת פסקה. אשמח אם תכווין אותי איך להוסיף כפתור "בצע" לגאדג'ט. Uziel302 - שיחה 23:20, 2 באפריל 2019 (IDT)תגובה

איך שולפים תוכן של ערך לפי שם?

עריכה
הועבר משיחת משתמש:ערן

הי, שיחקתי קצת עם מדיה ויקי:Gadget-wikibugs-patrol-clone.js כדי להתקדם לכיוון שהצעת. הצלחתי להוסיף כפתור שלישי ולגרום לו לבצע עריכה בערך המבוקש. אני לא מצליח להבין איך אני יכול על בסיס שם הערך לשלוף את תוכן הערך ולבצע בו החלפה. ניסיתי להיעזר בצ'קטי אבל זה מבצע החלפות בטקסטבוקס. העריכות שכבר היו בסקריפט הן ברמת הפסקה. תודה. Uziel302 - שיחה 21:38, 3 באפריל 2019 (IDT)תגובה

צריך לקבל את התוכן של הגרסה האחרונה. ראה במדיה ויקי:Gadget-quickLinker.js בפונקציה searchLinksApi דוגמה לקבלת כל הערכים (והתוכן שלהם) שעונים לחיפוש מסוים. ראה גם את המשתנה pagecontent. ערן - שיחה 21:42, 3 באפריל 2019 (IDT)תגובה
אם מדובר בג'אווהסקריפט, למעשה mw.Api.edit עושה כמעט בדיוק את זה: נותנים לו כל מיני דברים (דף, מספר פסקה אם רוצים פסקה וכן הלאה), ופונקציה שמקבלת תוכן נוכחי ומחזירה תוכן מעובד. ה-api הזה יקרא את תוכן הדף או הפסקה, ישלח אותה לפונקציה, יקבל את התוכן המעובד, וישמור. קיפודנחש 22:05, 3 באפריל 2019 (IDT)תגובה
קיפודנחש, אכן js. על ה-API הזה הסתכלתי. פשוט לא הבנתי איך עם ה-title אני שולף text. ניסיתי pagename.text וזה לא מוגדר. Uziel302 - שיחה 22:23, 3 באפריל 2019 (IDT)תגובה
אני מנסה לעבוד עם articleName.revisions[0]['*'] שהופיע במשתנה pagecontent וזה לא עובד. אפשר הסבר איך שולפים גרסה אחרונה של ערך? אין לי צורך לבצע חיפוש כדי לקבל ערכים, אני רוצה את הגרסה האחרונה של ערך ספציפי. Uziel302 - שיחה 22:37, 3 באפריל 2019 (IDT)תגובה
קיפודנחש, edit מאפשר רק שמירה. לשמור טקסט בערך מוגדר לא הייתה לי בעיה. כדי לשלוף טקסט של ערך צריך להשתמש ב-API:Query. ערן, במדיה ויקי:Gadget-quickLinker.js בפונקציה searchLinksApi יש שימוש ב-API:Search. זה מסובך ולא נותן לי באופן ישיר את הערך שכבר ידוע לי. דווקא בגאדג'ט של דיווח טעויות יש שימוש ב-query לשליפת תוכן הפסקה לארכוב. ממה שהבנתי, אחרי ששלפת את התוכן נאלצת לעשות לולאה על הדפים. האם זה בגלל שה-api מחזיר תשובה המסודרת לפי page id גם כששולפים לפי שם? האם אין דרך ישירה לשלוף תוכן של גרסה עדכנית של ערך מסוים? בגלל שאני לא מכיר מספיק js הסתבכתי גם בהעברת הנתונים. נניח ששלפתי את השאילתא הרלוונטית, איך אני שומר את המידע? ראיתי שהשתמשת ב-done.function מה שאומר שהמידע נשמר לי במשתנה פנימי בתוך הפונקציה הזו, איך אני יכול להוציא אותו החוצה? ניסיתי להשתמש במשתנה גלובלי וזה לא עבד לי. תודה. Uziel302 - שיחה 02:48, 6 באפריל 2019 (IDT)תגובה

כמדומני שיש איזה טקס עם revisions, שהסתבכת אתו. edit זה cheat code. אתה מעביר לקריאה פונקציה שמחזירה מה שהיא מקבלת, ובדרך יש לך את התוכן ביד - תעתיק אותו, ותעשה עם ההעתק מה שאתה רוצה, ותחזיר בדיוק מה שקיבלת. יכול ליות שזה סוגשל null edit, אבל זו הדרך הקלה והנוחה לשלם את האגרה. קיפודנחש 04:09, 6 באפריל 2019 (IDT)תגובה

Uziel302:
  • אל תשתמש במדיה ויקי:Gadget-wikibugs-patrol-clone.js כארגז חול לבדיקת קוד. יהיה לך הרבה יותר נוח להשתמש בConsole (כלומר F12 והדבקה של הקוד שאתה מנסה) ככה הקוד שאתה כותב באמת ירוץ (ולא קוד ישן יותר ששמור בשכבות מטמון של הדפדפן ו/או השרת), ככה משתמשים אחרים לא יושפעו מקוד חצי עובד, וכך גם תוכל לדבג את הקוד (תוסיף שורה של "debugger;" (בלי הגרשיים) כדי להגדיר נקודת עצירה).
  • התוצאה של ה-API היא תמיד (למיטב זכרוני, או לכל הפחות בפונקציות השימושיות) רשימת דפים. הרשימה יכולה להיות רשימה מנוונת עם אפס או אחת רשומות ולכן נדרשת לולאה.
  • בקשות API הן רק בקשות - למשל
api.get( {action:'query',prop:'revisions',titles:PAGENAME_VARIABLE, rvprop:'content|timestamp', curtimestamp: 1})
מחזיר בקשה לתוכן של דף מסוים (PAGENAME_VARIABLE) וכדי לגשת בפועל לתוצאה של הבקשה (הבקשה קוראת בצורה אסינכרונית) צריך להגדיר בdone מה יקרא כשהתוצאה תחזור. אני מציע שתוסיף debugger שתיארתי לעיל בתוך פונקציית הdone כדי שתוכל לדבג את התוצאה ולראות שאתה ניגש נכון למשתנים. ערן - שיחה 09:08, 6 באפריל 2019 (IDT)תגובה
תודה רבה על ההסברים. מה שאני לא מבין זה איך אחרי שהגעתי לערך מסוים בתוך פונקציית done אני מוציא את הערך הזה החוצה. הצלחתי לראות בקונסול את התוכן של הדף, אבל אני לא מבין איך אני שומר אותו במקום שאוכל לעשות עליו מניפולציות: var api=new mw.Api(); api.get({action:'query',prop:'revisions',titles:'משתמש:Uziel302/רצפים חשודים א',rvprop:'content',curtimestamp:1}).done(function(d){debugger;for(var rv in d.query.pages){console.log(d.query.pages[rv].revisions[0]["*"]);}}). Uziel302 - שיחה 09:54, 6 באפריל 2019 (IDT)תגובה
הצלחתי לערוך תוכן של ערך באמצעות קריאה מתוך פונקציית done. בכל זאת אשמח להבין איך אפשר להוציא משתנה עם תוכן של הערך מחוץ לפונקציה. Uziel302 - שיחה 10:14, 6 באפריל 2019 (IDT)תגובה
נראה לי שהבנת איך ניגשים לתוכן הדף תחליף את console.log בקריאה לפונקציה שלך שהפרמטר שלה יהיה תוכן הדף ותעשה בו מניפולציות כרצונך. אם אתה מאוד רוצה לשים את זה במשתנה גלובלי - אפשר בdone לעשות השמה למשתנה גלובלי אבל המשתנה הגלובלי יקבל את הערך של תוכן הדף רק כשהבקשה מסתיימת (יכול להיות אחרי שנייה, ויכול להיות אחרי 10 שניות - אתה לא יודע...). ערן - שיחה 10:18, 6 באפריל 2019 (IDT)תגובה
הגאדג'ט עובד. קראתי לפונקציית הכתיבה מתוך פונקציית הקריאה של הערך. Uziel302 - שיחה 12:11, 6 באפריל 2019 (IDT)תגובה
חזרה לדף "Gadget-wikibugs-patrol-clone.js".