דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • בהיר
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • כהה
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
לומדעסל

לומדעס

@לומדעס
מדריכים עימוד
הפסקת מעקב מעקב
אודות
פוסטים
2.9k
נושאים
204
שיתופים
0
קבוצות
3
עוקבים
38
עוקב אחרי
15

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • להורדה | סוף סוף אפשר לקבל ולשלוח SMS מהמספר של ימות ישירות לטלפון – אפליקציה לאנדרואיד
    לומדעסל לומדעס

    @טכנאי-מחשבים מה שהוא רוצה שונה ממה שאתה חושב
    הוא רוצה שיהיה אפשרי לענות לצינתוק ולשמוע את ההודעה ללא צורך לחזור לשיחה או לצינתוק של הוירטואל פלוס

    תוצרת הבנייה

  • להורדה | סוף סוף אפשר לקבל ולשלוח SMS מהמספר של ימות ישירות לטלפון – אפליקציה לאנדרואיד
    לומדעסל לומדעס

    @י.ע רעיון יפה תציע את זה לימות המשיח

    בסים מהדרין כבר מובנה שאם אתה מקבל אס אמ אס למספר שלך אתה מקבל שיחה ממספר טלפון מוגדר מראש שמקריא לך את הודעה כבר כלול בחבילה בלי שום שקל נוסף

    תוצרת הבנייה

  • להורדה | סוף סוף אפשר לקבל ולשלוח SMS מהמספר של ימות ישירות לטלפון – אפליקציה לאנדרואיד
    לומדעסל לומדעס

    @י.ע סתם בגלל שיש הרבה חברה שהמספר של ימות המשיח של הוירטואל פלוס משמש אותם בנוסף לזה גם לכל מיני אימותים ודברים כאלה

    דבר נוסף יש כאלה שמתחברים רק עם wifi ואין להם שם באמת סים פיזי כדי לקבל עליו sms

    אתה אומר לי שצריך לפתח כזה דבר למחשב בעדכון הבא אני אעלה גם גרסה למחשב

    תוצרת הבנייה

  • להורדה | סוף סוף אפשר לקבל ולשלוח SMS מהמספר של ימות ישירות לטלפון – אפליקציה לאנדרואיד
    לומדעסל לומדעס

    @0772637000

    SMS-Yemot (3).apk

    תוצרת הבנייה

  • להורדה | סוף סוף אפשר לקבל ולשלוח SMS מהמספר של ימות ישירות לטלפון – אפליקציה לאנדרואיד
    לומדעסל לומדעס

    @0772637000 גם זה בעדכון הבא

    תוצרת הבנייה

  • להורדה | סוף סוף אפשר לקבל ולשלוח SMS מהמספר של ימות ישירות לטלפון – אפליקציה לאנדרואיד
    לומדעסל לומדעס

    @0772637000 למקרה שרוצים לעבור למצב אופליין ועדיין לראות את ההודעות הישנות אם האפליקציה נמחקה או משהו כזה

    תוצרת הבנייה

  • להורדה | סוף סוף אפשר לקבל ולשלוח SMS מהמספר של ימות ישירות לטלפון – אפליקציה לאנדרואיד
    לומדעסל לומדעס

    @0772637000 אני אנסה עכשיו לעשות סינון גם לפי מספר או שם שולח גם לפי התוכן של ההודעה עצמה

    תוצרת הבנייה

  • להורדה | סוף סוף אפשר לקבל ולשלוח SMS מהמספר של ימות ישירות לטלפון – אפליקציה לאנדרואיד
    לומדעסל לומדעס

    @0772637000 נוסף במיוחד בשבילך

    SMS-Yemot 3•1 .apk

    איך זה עובד
    המסך נקרא "סינון הודעות". נכנסים אליו מתפריט ⋮ בתיבת ההודעות, או מההגדרות.

    שלושה סוגי כללים, בשתי הרשימות:

    שולח: מספר טלפון או שם שולח, למשל Leumi.
    מתחיל ב: קידומת, למשל 03313.
    תוכן: מילים בהודעה. אפשר לכתוב כמה מילים מופרדות בפסיק, למשל להסרה, הסר, וההודעה תסונן אם מופיעה בה אחת מהן. יש גם כפתורים מהירים למילים נפוצות: להסרה, הסר, הסרה, לביטול, הסירו.
    הרשימה הלבנה עובדת בשני מצבים:

    רגיל: הרשימה הלבנה היא חריג לרשימה השחורה. למשל, אם חוסמים את המילה "להסרה" אבל הבנק ברשימה הלבנה, קוד מהבנק יגיע גם אם כתוב בו "להסרה".
    "לקבל רק מהרשימה הלבנה": יתקבלו רק הודעות שמתאימות לרשימה הלבנה, וכל השאר יסוננו. זה המצב למי שרוצה לקבל קודים רק מגוף מסוים. אם המצב הזה מופעל כשהרשימה הלבנה ריקה, מופיעה אזהרה.
    מה קורה להודעות שסוננו:

    הן לא מופיעות בתיבה ולא מקפיצות התראה.
    הן לא נמחקות אוטומטית. הן מופיעות בתחתית המסך, וליד כל אחת יש כפתור "הוספת השולח לרשימה הלבנה" למקרה של טעות.
    כל שינוי בכללים חל מיד גם על ההודעות שכבר שמורות בטלפון, ולא רק על הודעות חדשות.

    תוצרת הבנייה

  • להורדה | סוף סוף אפשר לקבל ולשלוח SMS מהמספר של ימות ישירות לטלפון – אפליקציה לאנדרואיד
    לומדעסל לומדעס

    @ממוחשב https://send.magicode.me/send-file/file/d43dc98f290fbd67de130316a21f895903ca61bd/view

    תוצרת הבנייה

  • להורדה | סוף סוף אפשר לקבל ולשלוח SMS מהמספר של ימות ישירות לטלפון – אפליקציה לאנדרואיד
    לומדעסל לומדעס

    @0772637000 בעזרת השם בעדכון הבא

    תוצרת הבנייה

  • להורדה | סוף סוף אפשר לקבל ולשלוח SMS מהמספר של ימות ישירות לטלפון – אפליקציה לאנדרואיד
    לומדעסל לומדעס

    @מטען-נייד ערכתי

    תוצרת הבנייה

  • להורדה | סוף סוף אפשר לקבל ולשלוח SMS מהמספר של ימות ישירות לטלפון – אפליקציה לאנדרואיד
    לומדעסל לומדעס

    מי שיש לו מערכת וירטואל פלוס בימות המשיח בטח מכיר את זה.
    נותנים את המספר של המערכת לאתר, לבנק, לחברת משלוחים, או סתם כמספר שלא רוצים לתת את הפרטי, ואז מגיע SMS.
    ואיפה הוא? באתר הניהול של ימות. צריך להיכנס, להתחבר, לקבל קוד אימות למייל, להעתיק מהמייל, להדביק בחזרה ואז להתחבר,

    אז הכנתי אפליקציה לאנדרואיד שעובדת ישירות מול ה-API של ימות, ונראית כמו אפליקציית הודעות רגילה.

    קבלה וקודי אימות

    ההודעות קופצות בהתראה תוך כמה שניות, גם כשהאפליקציה סגורה
    אפשר לבחור כל כמה זמן לבדוק: מ-3 שניות עד דקה
    יש כפתור לבדיקה ידנית, למי שאין סבלנות 😅
    כשיש קוד בהודעה, יש כפתור "העתקת קוד" גם בהתראה וגם בתוך השיחה
    אפשר לענות ישר מההתראה בלי לפתוח את האפליקציה
    שליחה

    שליחה מהמספר של המערכת, או ממספר משנה או זיהוי מאושר
    אם ימות אישרו לכם, אפשר לשלוח גם עם שם במקום מספר
    תזמון הודעה לשעה מסוימת
    הודעת פלאש (קופצת על כל המסך)
    רואים ליד כל הודעה אם היא נשלחה, נמסרה או נכשלה, וכמה יחידות היא עלתה
    סינון (מה שהכי חיכיתי לו)

    רשימה שחורה ורשימה לבנה, לפי מספר, לפי שם שולח, לפי קידומת או לפי מילים בהודעה
    אפשר לשלב: למשל רק הודעות מהבנק שמכילות "קוד", בלי הפרסומות שלהם
    יש מצב "לקבל רק מהרשימה הלבנה", למי שרוצה לקבל קודים רק מגוף מסוים
    ולמי שנמאס לו מ"להסרה השב 1": חוסמים את המילים האלה בלחיצה
    הודעות שסוננו לא נמחקות, הן נשמרות בצד בלי התראה, למקרה של טעות
    נוחות

    שמות ותמונות מאנשי הקשר במקום מספרים
    הצמדת שיחות, ארכיון בהחלקה, חיפוש
    כמה מערכות ימות באפליקציה אחת, ואפשרות לשיחה נפרדת לכל מספר משנה
    רואים את יתרת היחידות, ומקבלים אזהרה כשהיא נמוכה
    גיבוי ושחזור של ההודעות לקובץ
    מצב כהה, ובטאבלט רשימת השיחות והשיחה מוצגות אחת ליד השנייה
    התחברות ואבטחה

    מתחברים עם מספר מערכת וסיסמה, או עם מפתח API (מומלץ, ולהגביל אותו ב"חומת האש" רק לשירותי ה-SMS)
    אם במערכת מופעל אימות דו-שלבי, התחברות עם סיסמה יכולה להיחסם, ואז מפתח API זה הפתרון
    הפרטים נשמרים מוצפנים רק בטלפון, אין שום שרת באמצע
    כשמשהו לא עובד, השגיאה מוצגת בעברית ולא סתם "שגיאה"
    כמה דברים חשובים

    כדי שההודעות יגיעו מיד גם כשהמסך כבוי, צריך לאשר "ללא הגבלת סוללה" (האפליקציה מבקשת את זה לבד). בשיאומי וכדומה צריך לאשר גם הפעלה אוטומטית
    שליחת SMS מחויבת ביחידות לפי התעריף הרגיל של ימות
    מתאים לכל אנדרואיד מגרסה 5 ומעלה
    להורדה:
    SMS-Yemot-3.4.apk
    זה עדיין חדש, אז אשמח שמי שמנסה יעדכן איך עובד לו, במיוחד מי שיש לו כמה מספרי משנה או טלפון עם חיסכון סוללה אגרסיבי. ואם יש רעיונות לשיפורים אני פתוח 👍

    תמונות מהאפליקציה

    11_tablet.png 10_chat_dark.png 08_realtime.png 01_welcome.png 02_login.png 09_inbox_dark.png 03_inbox.png 04_chat.png 05_code.png 06_filter.png 00_banner.png

    תוצרת הבנייה

  • מדריך | GPT PLUS לחודש חינם
    לומדעסל לומדעס

    @ישראל1212 חמוד מאוד, אני קיבלתי לחודש וכמובן ביטלתי,
    לא דיברתי איתו על מנוי חודשי או משהו כזה ,
    עומד להיגמר לי אני אנסה להתחבר מחשבון אחר,
    שמה לא היה לי את האופציה של חודש חינם אני אנסה לדבר איתו על זה.
    אולי זה יעבוד.

    עזרה הדדית - בינה מלאכותית

  • המלצה | סוויצ' חסימת אנדרואיד חדשה מבוססת Abloq (MDM)
    לומדעסל לומדעס

    @ביוס הבעיה של התפרייטים שלא הוצגו טוב נפתרה.

    הבעיה שלא מזהה טוב את המולטמדיה עדין קיימת והוא לא נותן עוד אופציות אני מפעיל את MDM של אפריים ורק את ששלך ואז הוא מציע אות האופציה התקנה מהירה. כנראה בגלל שהוא מזהה את הפורט הפתוח.

    מסלול של חסימת תמונות בגמייל ובצאט לא ראיתי שיש

    דבר נוסף שכבר כתבתי למעלה להוסיף בהגדרות את האופציה לחסום את החלונית של מערכת בתוך ההגדרות רכב כי משם אפשרי לאפס בדקתי את זה וזה ניתן לאיפוס גם שהגדרות זה חסום.

    אפליקציות להורדה

  • המלצה | סוויצ' חסימת אנדרואיד חדשה מבוססת Abloq (MDM)
    לומדעסל לומדעס

    @ביוס פחות מצליח לזהות במולטימדיות כאילו,
    החסימה של אפריים ד כן מזהה, החסימה שלך לא מצליחה לזהות את הניפוי באגים פתוח מפנה אותי כל פעם לפתוח את הניפוי,
    תכלס מה שאני עושה אני מפעיל את ההפעלה מומלצת בחסימת mdm של אפריים

    ואז אני מהר חוזר לחסימה שלך עושה סריקה ושוב
    הוא מצליח לזהות שיש אופציה להתקנה ואני ממשיך משם.

    עוד דבר קטן אם אפשר לעשות מסלולים בסגנון כמו שהיה בחסימה של mdm מסלול מולטימדיה
    דבר נוסף בהגדרות רכב יש אופציה של שחזור להגדרות יצרן ככה שגם אם חוסמים את זה דרך ההגדרות הרגילות משם עדיין אפשר לאפס את המערכת ולהסיר את החסימה או שהחסימה הזאת בכלל לא מתואמת למולטימדיות אין לך כוונה גם לעשות את זה
    שים לב שהתצוגה של הקטגוריות במולטימדיה כנראה במסכים רחבים מציג אותה עם חלון לבן גדולScreenshot_20260917-085821.png Screenshot_20260917-085813.png

    אפליקציות להורדה

  • מדריך | המשך למערכת סוכן אישי למייל ולדרייב שלכם-שידרוג עצום למערכת!!! כולל גישה ישירה לצ'אטים דרך הטלפון!!!!!
    לומדעסל לומדעס

    @arish אשמח שתשתף את הקוד המקור שיושב בשרת
    נתונים אתה לוקח?

    עזרה הדדית - מחשבים וטכנולוגיה

  • שיתוף | הורדת כל קבצי הקוד מגוגל סקריפט בלחיצה אחת
    לומדעסל לומדעס

    @האדם-החושב
    נכון, מכיר את clasp והוא באמת כלי הרבה יותר מקיף.

    היתרון כאן שזה מיועד למי שרוצה רק להוריד את הקבצים בצורה מהירה ישירות מהעורך, בלי להתקין Node.js ובלי להתחבר ולהגדיר את הפרויקט דרך שורת הפקודה.

    אבל למי שעובד קבוע עם Apps Script ורוצה גם להעלות ולעדכן קבצים, ברור ש-clasp הוא פתרון יותר מקצועי.

    עזרה הדדית - מחשבים וטכנולוגיה

  • שיתוף | הורדת כל קבצי הקוד מגוגל סקריפט בלחיצה אחת
    לומדעסל לומדעס

    @צדיק-וטוב-לו-0 עניתי לך יותר מפורט

    עזרה הדדית - מחשבים וטכנולוגיה

  • שיתוף | הורדת כל קבצי הקוד מגוגל סקריפט בלחיצה אחת
    לומדעסל לומדעס

    @צדיק-וטוב-לו-0

    1. התכוונתי לקובץ המניפסט appsscript.json. כדי שהוא ירד צריך שהוא יהיה מוצג ברשימת הקבצים בעורך. אם בפרויקט יש קבצי HTML גם הם אמורים לרדת, אבל אם יש רק קבצי GS אז כמובן שרק הם ירדו.

    2. זה לוקח קצת זמן כי הסקריפט עובר על כל קובץ בנפרד, פותח אותו וממתין עד שהתוכן שלו נטען במלואו. הוספתי את ההמתנה כדי שלא יוריד קובץ חלקי או את אותו תוכן בכמה שמות.

    3. לגבי Tampermonkey אתה צודק, זה באמת יכול להיות יותר נוח. כרגע עשיתי את זה כסימנייה כדי שלא יהיה צורך להתקין תוסף, אבל אולי בהמשך אכין גם גרסה ל-Tampermonkey.

    עזרה הדדית - מחשבים וטכנולוגיה

  • שיתוף | הורדת כל קבצי הקוד מגוגל סקריפט בלחיצה אחת
    לומדעסל לומדעס

    לפעמים רוצים להוריד את כל הקוד מפרויקט בגוגל סקריפט ואין שם אפשרות נוחה להוריד את כל הקבצים.

    הכנתי קוד קטן שמוסיפים כסימנייה בדפדפן. נכנסים לפרויקט בגוגל סקריפט, לוחצים על הסימנייה והוא עובר על כל קבצי הקוד שמופיעים בפרויקט ומאפשר להוריד אותם למחשב, כולל קובץ appsscript.json.

    כרגע בדקתי אותו על קבצי GS ועל קובץ המניפסט וזה עובד. אשמח שמי שבודק בפרויקט עם הרבה קבצים יעדכן אם הכול ירד לו כמו שצריך.

    אופן ההתקנה:

    1. יוצרים סימנייה חדשה בדפדפן.
    2. מדביקים בשדה הכתובת את כל הקוד המצורף, כולל javascript: שבהתחלה.
    javascript:(()=>{'use strict';if(document.getElementById('gas-downloader-debug')){document.getElementById('gas-downloader-debug').remove();return}const sleep=ms=>new Promise(r=>setTimeout(r,ms));const clean=s=>String(s||'').replace(/[\u200e\u200f]/g,'').trim();const safe=s=>clean(s).replace(/[\\/:*?"<>|]+/g,'_').replace(/\s+/g,' ').slice(0,120)||'code.gs';const panel=document.createElement('section');panel.id='gas-downloader-debug';panel.dir='rtl';panel.style='position:fixed;z-index:2147483647;top:12px;left:12px;width:430px;max-width:calc(100vw - 24px);max-height:calc(100vh - 24px);display:flex;flex-direction:column;background:#fff;color:#202124;border:2px solid #1a73e8;border-radius:12px;box-shadow:0 10px 35px #0006;font:13px Arial,sans-serif;text-align:right';const E=(tag,text,id,style)=>{const e=document.createElement(tag);if(text!=null)e.textContent=text;if(id)e.id=id;if(style)e.style.cssText=style;return e};const header=E('div',null,null,'display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid #ddd');header.append(E('b','מוריד Apps Script — מעקב',null,'font-size:16px;flex:1'),E('button','העתק לוג','gadCopy'),E('button','✕','gadClose'));const top=E('div',null,null,'padding:10px 14px'),stateEl=E('div','הסקריפט הופעל בהצלחה. מתחיל סריקה…','gadState');const track=E('div',null,null,'height:7px;background:#e8eaed;border-radius:5px;overflow:hidden;margin-top:8px'),barEl=E('div',null,'gadBar','height:100%;width:1%;background:#1a73e8;transition:width .2s');track.append(barEl);top.append(stateEl,track);const filesEl=E('div',null,'gadFiles','padding:0 14px 8px'),logEl=E('pre',null,'gadLog','direction:ltr;text-align:left;white-space:pre-wrap;overflow:auto;min-height:120px;max-height:280px;margin:0;padding:10px 14px;background:#202124;color:#d7f8d7;font:12px Consolas,monospace');logEl.dir='ltr';const footer=E('div',null,null,'display:flex;gap:8px;padding:10px 14px'),retryEl=E('button','סרוק שוב','gadRetry','flex:1'),downloadEl=E('button','הורד קבצים שנקראו','gadDownload','flex:1;background:#1a73e8;color:#fff;border:0;border-radius:5px');downloadEl.disabled=true;footer.append(retryEl,downloadEl);panel.append(header,top,filesEl,logEl,footer);document.body.appendChild(panel);const q=id=>panel.querySelector('#'+id),logBox=q('gadLog'),state=q('gadState'),bar=q('gadBar'),filesBox=q('gadFiles'),downloadBtn=q('gadDownload');const logs=[];const log=(message,type='INFO')=>{const line=`${new Date().toLocaleTimeString('he-IL')} [${type}] ${message}`;logs.push(line);logBox.textContent=logs.join('\n');logBox.scrollTop=logBox.scrollHeight;console.log('[GAS Downloader]',message)};const progress=(message,value)=>{state.textContent=message;bar.style.width=Math.max(1,Math.min(100,value))+'%'};q('gadClose').onclick=()=>panel.remove();q('gadCopy').onclick=async()=>{try{await navigator.clipboard.writeText(logs.join('\n'));log('הלוג הועתק ללוח')}catch(e){log('העתקת הלוג נכשלה: '+e.message,'ERROR')}};const visible=el=>{const r=el.getBoundingClientRect(),s=getComputedStyle(el);return r.width>0&&r.height>0&&s.display!=='none'&&s.visibility!=='hidden'};const extractName=el=>{const raw=clean(el.getAttribute('aria-label')||el.getAttribute('title')||el.innerText||el.textContent);const matches=[...raw.matchAll(/([^\n]+?\.(?:gs|html|json))(?=\n|$)/ig)];return matches.length===1?safe(matches[0][1]):''};const discoverFiles=()=>{const result=new Map();for(const el of document.querySelectorAll('*')){if(panel.contains(el)||!visible(el))continue;const name=extractName(el);if(!name)continue;const r=el.getBoundingClientRect(),score=r.width*r.height;const old=result.get(name);if(!old||score<old.score)result.set(name,{el,score})}return[...result].map(([name,x])=>({name,el:x.el,status:'ממתין'}))};const monacoContexts=()=>{const found=[];const visit=w=>{try{if(w.monaco&&w.monaco.editor)found.push(w);for(let i=0;i<w.frames.length;i++)visit(w.frames[i])}catch(_){}};visit(window);return found};const readMonaco=(wanted)=>{for(const w of monacoContexts()){const api=w.monaco.editor;const editors=typeof api.getEditors==='function'?api.getEditors():[];const candidates=[...editors].sort((a,b)=>{try{return Number(b.hasTextFocus())-Number(a.hasTextFocus())}catch(_){return 0}});for(const ed of candidates){try{const model=ed.getModel();if(!model)continue;const uri=String(model.uri||'');if(uri.toLowerCase().includes(wanted.toLowerCase().replace(/\.(gs|html)$/i,''))||ed.hasTextFocus()||(ed.getDomNode()&&visible(ed.getDomNode())))return{value:model.getValue(),source:'Monaco editor',uri}}catch(_){}}const models=typeof api.getModels==='function'?api.getModels():[];for(const model of models){try{const uri=String(model.uri||'');if(uri.toLowerCase().includes(wanted.toLowerCase().replace(/\.(gs|html)$/i,'')))return{value:model.getValue(),source:'Monaco model',uri}}catch(_){}}}return null};const editorSnapshot=()=>{const r=readMonaco('');return r?{value:r.value,uri:r.uri,signature:r.uri+'|'+r.value.length+'|'+r.value.slice(0,80)+'|'+r.value.slice(-80)}:null};const isSelectedFile=f=>{let e=f.el;for(let i=0;e&&i<6;i++,e=e.parentElement){const cls=String(e.className||'').toLowerCase();if(e.getAttribute('aria-selected')==='true'||e.getAttribute('aria-current')==='true'||/(^|[\s_-])(selected|active)([\s_-]|$)/.test(cls))return true}return false};const activateFile=async f=>{const r=f.el.getBoundingClientRect(),x=Math.max(0,Math.min(innerWidth-1,r.left+r.width/2)),y=Math.max(0,Math.min(innerHeight-1,r.top+r.height/2)),hit=document.elementFromPoint(x,y)||f.el,candidates=[];for(const e of [hit,f.el,hit.parentElement,f.el.parentElement,hit.closest('[role="treeitem"]'),hit.closest('[role="button"]'),hit.closest('[tabindex]')])if(e&&!panel.contains(e)&&!candidates.includes(e))candidates.push(e);log(`מפעיל את ${f.name}; ${candidates.length} יעדי לחיצה אפשריים`);for(const e of candidates){try{e.scrollIntoView({block:'nearest'});e.focus?.();for(const type of ['pointerdown','mousedown','pointerup','mouseup','click'])e.dispatchEvent(new MouseEvent(type,{view:window,bubbles:true,cancelable:true,clientX:x,clientY:y,button:0}));e.click?.();await sleep(180)}catch(_){}}};const readClipboard=async()=>{const area=[...document.querySelectorAll('.monaco-editor textarea,textarea.inputarea,[role="textbox"]')].find(el=>!panel.contains(el)&&visible(el));if(!area)return null;area.focus();area.dispatchEvent(new KeyboardEvent('keydown',{key:'a',code:'KeyA',ctrlKey:true,bubbles:true,cancelable:true}));area.dispatchEvent(new KeyboardEvent('keyup',{key:'a',code:'KeyA',ctrlKey:true,bubbles:true,cancelable:true}));await sleep(100);try{document.execCommand('copy');await sleep(100);const value=await navigator.clipboard.readText();return value==null?null:{value,source:'Clipboard fallback',uri:''}}catch(e){log('גישה ללוח לא זמינה: '+e.message,'WARN');return null}};const waitForContent=async(name,before,allowSame)=>{let last=null,stable=0;for(let attempt=1;attempt<=25;attempt++){await sleep(attempt===1?450:220);const current=readMonaco(name)||await readClipboard();if(current){const sig=current.uri+'|'+current.value.length+'|'+current.value.slice(0,80)+'|'+current.value.slice(-80),changed=!before||sig!==before.signature;if(changed||allowSame){if(last&&current.value===last.value&&current.uri===last.uri)stable++;else stable=0;last=current;if(stable>=2)return current}}if(attempt===1||attempt%5===0)log(`ממתין להחלפת העורך עבור ${name}; ניסיון ${attempt}/25`)}return last};let collected=[];const renderFiles=files=>{filesBox.replaceChildren(E('b','קבצים שזוהו:'));for(const f of files){const row=E('div',null,null,'display:flex;gap:8px'),name=E('span',f.name,null,'flex:1');name.dir='ltr';row.append(name,E('span',f.status));filesBox.append(row)}};const downloadOne=(name,text)=>{const blob=new Blob([text],{type:'text/plain;charset=utf-8'}),url=URL.createObjectURL(blob),a=document.createElement('a');a.href=url;a.download=name;document.body.appendChild(a);a.click();a.remove();setTimeout(()=>URL.revokeObjectURL(url),15000)};downloadBtn.onclick=async()=>{if(!collected.length)return;log(`מתחיל הורדה של ${collected.length} קבצים`);for(let i=0;i<collected.length;i++){downloadOne(collected[i].name,collected[i].text);await sleep(350)}log('פקודות ההורדה נשלחו. אם Chrome שואל על הורדות מרובות — יש לאשר.');progress('ההורדה הסתיימה',100)};let running=false;const run=async()=>{if(running)return;running=true;collected=[];downloadBtn.disabled=true;progress('סורק את רשימת הקבצים…',5);log('כתובת הדף: '+location.href);log('כותרת הדף: '+document.title);log('Monaco גלוי: '+(monacoContexts().length?'כן':'לא'),'CHECK');const files=discoverFiles();renderFiles(files);log(`נמצאו ${files.length} שמות קבצים: ${files.map(f=>f.name).join(', ')||'אין'}`);if(!files.length){progress('לא נמצאו קבצים. פתח את אזור "קבצים" ולחץ "סרוק שוב".',0);log('הסריקה לא מצאה רכיבי קבצים גלויים','ERROR');running=false;return}for(let i=0;i<files.length;i++){const f=files[i];f.status='מחליף קובץ…';renderFiles(files);progress(`קורא ${i+1}/${files.length}: ${f.name}`,10+Math.round(i/files.length*75));const before=editorSnapshot(),alreadySelected=isSelectedFile(f);log(`${f.name}: היה פעיל לפני הלחיצה: ${alreadySelected?'כן':'לא'}`);try{await activateFile(f)}catch(e){log('הלחיצה נכשלה: '+e.message,'ERROR')}const result=await waitForContent(f.name,before,alreadySelected);if(result){const duplicate=collected.find(x=>x.text===result.value);if(duplicate){f.status='כפילות — לא נשמר';log(`${f.name}: התקבל אותו תוכן כמו ${duplicate.name}; הקובץ לא נשמר כדי למנוע כפילות`,'ERROR')}else{collected.push({name:f.name,text:result.value});f.status=`נקרא (${result.value.length} תווים)`;log(`${f.name}: נקרא לאחר החלפת העורך; ${result.value.length} תווים${result.uri?'; model='+result.uri:''}`)}}else{f.status='נכשל בהחלפה';log(`${f.name}: העורך לא התחלף ולכן התוכן לא נשמר`,'ERROR')}renderFiles(files)}downloadBtn.disabled=!collected.length;progress(`נקראו ${collected.length} מתוך ${files.length}. לחץ על כפתור ההורדה.`,90);log(`הסריקה הסתיימה: ${collected.length}/${files.length} קבצים מוכנים`);running=false};q('gadRetry').onclick=run;log('חלונית המעקב נפתחה — סימן שה-Bookmarklet אכן רץ');run();})()
    
    1. נכנסים לפרויקט בגוגל סקריפט.
    2. לוחצים על הסימנייה.
    3. לאחר שהקבצים נקראו, לוחצים על „הורד קבצים שנקראו”.

    אם כרום מבקש אישור להורדת מספר קבצים, צריך לאשר.

    עזרה הדדית - מחשבים וטכנולוגיה
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר