דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • בהיר
  • 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

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

צמצם

@צמצם
הפסקת מעקב מעקב
אודות
פוסטים
52
נושאים
0
שיתופים
0
קבוצות
0
עוקבים
0
עוקב אחרי
0

פוסטים

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

  • להורדה | סימניה להורדת קבצי הקוד מ Base44
    צ צמצם

    תיקנתי את הסקריפט שוב עם קלוד והתברר שהבעיה הייתה כי Base44 עברו למבנה role="treeitem" עם ARIA מלא, במקום button + SVG עם קלאס lucide. זה ההסבר לכל התקלה (לא באמת הבנתי... קלוד ניתח את זה עם בדיקות בקונסול וזה התוצאה)

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

    javascript:(async()=>{
    if(document.querySelector("html").className.includes("translated"))return alert("⚠ בטל תרגום דפדפן.");
    const sleep=ms=>new Promise(r=>setTimeout(r,ms));
    const waitFor=async(checkFn,{maxWait=2000,interval=30,stableChecks=2}={})=>{
      const start=Date.now();let last=undefined,stable=0;
      while(Date.now()-start<maxWait){
        let val;try{val=await checkFn();}catch(e){val=undefined;}
        if(val!==undefined&&val===last){stable++;if(stable>=stableChecks)return val;}else{stable=0;}
        last=val;await sleep(interval);
      }
      return last;
    };
    const nav=document.querySelector('[data-testid="ds-file-tree"]')||document.querySelector('nav.flex-1.overflow-y-auto');
    if(!nav)return alert("❌ לא נמצא עץ קבצים. ודא שאתה בלשונית 'Code'.");
    let root;try{root=await window.showDirectoryPicker({mode:"readwrite"})}catch{return}
    const panel=document.createElement("div");
    panel.style="position:fixed;top:12px;left:50%;transform:translateX(-50%);width:450px;background:#111;color:#fff;font:13px system-ui;padding:16px;border-radius:14px;z-index:999999;direction:rtl;box-shadow:0 10px 30px rgba(0,0,0,0.8);border:1px solid #333";
    panel.innerHTML=`<div style="display:flex;gap:10px;align-items:center;margin-bottom:12px"><div style="width:16px;height:16px;border:3px solid #444;border-top-color:#4caf50;border-radius:50%;animation:spin 1s linear infinite"></div><b style="font-size:15px">Base44 Extractor V16 (Fast)</b></div><div id="stg" style="color:#aaa;margin-bottom:8px">מאתחל...</div><div style="background:#222;height:12px;border-radius:6px;overflow:hidden"><div id="bar" style="height:100%;width:0%;background:#4caf50;transition:width 0.3s"></div></div><div id="pct" style="margin-top:6px;color:#888;font-size:12px">0%</div><div id="logArea" style="margin-top:10px;height:150px;background:#000;border:1px solid #444;border-radius:6px;overflow-y:auto;font-family:monospace;font-size:11px;padding:6px;text-align:left;direction:ltr;white-space:nowrap;color:#0f0;"></div><style>@keyframes spin{to{transform:rotate(360deg)}}</style>`;
    document.body.appendChild(panel);
    const stage=t=>{panel.querySelector("#stg").textContent=t;};
    let fullLog="";
    const logFn=m=>{console.log(m);fullLog+=m+"\r\n";const l=panel.querySelector("#logArea");if(l){l.innerHTML+='<div>> '+m+'</div>';l.scrollTop=l.scrollHeight;}};
    const progress=(d,t)=>{const p=Math.floor((d/t)*100);panel.querySelector("#bar").style.width=p+"%";panel.querySelector("#pct").textContent=`${p}% (${d} מתוך ${t} קבצים)`;};
    logFn("System Initialized V16 - Fast Mode.");
    
    const getNodes=()=>Array.from(nav.querySelectorAll('[role="treeitem"]')).map(el=>{
      const isFolder=el.hasAttribute('data-group-id');
      const isFile=el.hasAttribute('data-file-id');
      const fullPath=isFolder?el.getAttribute('data-group-id'):el.getAttribute('data-file-id');
      if(!fullPath)return null;
      const nameSpan=el.querySelector('span[data-testid="ds-text"]')||el.querySelector('span[data-ds-tooltip-anchor]');
      const text=nameSpan?nameSpan.innerText.trim():fullPath.split('/').pop();
      const isClosed=isFolder&&el.getAttribute('aria-expanded')==='false';
      const clickTarget=el.querySelector('div.cursor-pointer')||el;
      return{el,clickTarget,text,fullPath,isFolder,isFile,isClosed};
    }).filter(Boolean);
    
    const scrollTop=async()=>{nav.scrollTop=0;await waitFor(()=>nav.scrollTop,{maxWait:400,interval:30,stableChecks:2});};
    const scrollStep=async(px=700)=>{const oldScroll=nav.scrollTop;nav.scrollTop+=px;await waitFor(()=>nav.scrollTop,{maxWait:250,interval:25,stableChecks:2});return nav.scrollTop!==oldScroll;};
    
    stage("פותח תיקיות...");
    await scrollTop();
    let expStable=0,attempts=new Map();
    while(expStable<5){
      const nodes=getNodes();
      let expanded=false;
      for(const n of nodes){
        if(n.isClosed){
          const tries=attempts.get(n.fullPath)||0;
          if(tries<3){
            attempts.set(n.fullPath,tries+1);
            logFn(`Expanding folder: ${n.fullPath}`);
            n.el.scrollIntoView({block:"center"});
            n.clickTarget.click();
            await waitFor(()=>{const fresh=getNodes().find(x=>x.fullPath===n.fullPath);return fresh?(fresh.isClosed===false?true:undefined):undefined;},{maxWait:600,interval:25,stableChecks:1});
            expanded=true;expStable=0;break;
          }
        }
      }
      if(!expanded){const moved=await scrollStep(700);if(!moved)expStable++;else expStable=0;}
    }
    
    stage("ממפה פרויקט...");
    await scrollTop();
    let mappedFiles=new Map(),mapStable=0;
    while(mapStable<5){
      const nodes=getNodes();
      for(const n of nodes){
        if(n.isFile&&!mappedFiles.has(n.fullPath)){
          const saveName=n.text.includes(".")?n.text:n.text+".js";
          const parts=n.fullPath.split('/');
          mappedFiles.set(n.fullPath,{name:saveName,path:n.fullPath,dir:parts.slice(0,-1)});
          logFn(`Mapped: ${n.fullPath}`);
        }
      }
      const moved=await scrollStep(700);
      if(!moved)mapStable++;else mapStable=0;
    }
    const fList=Array.from(mappedFiles.values());
    logFn(`Mapping complete. Found ${fList.length} files.`);
    if(!fList.length){panel.remove();return alert("לא נמצאו קבצים. נסה לרענן את העמוד.");}
    
    const sanitize=s=>s.replace(/[<>:"\/\\|?*]/g,"_");
    const readMonacoContent=async(fileName)=>{
      return await waitFor(()=>{
        if(window.monaco?.editor){
          const m=window.monaco.editor.getModels();
          if(m.length){
            const md=m.find(x=>x.uri.path.toLowerCase().endsWith(fileName.toLowerCase()))||m[0];
            const val=md.getValue();
            if(val)return val;
          }
        }
        return undefined;
      },{maxWait:2500,interval:30,stableChecks:2});
    };
    
    let saved=0,failed=[];
    for(let i=0;i<fList.length;i++){
      const file=fList[i];
      stage(`מוריד: ${file.name}`);
      progress(i,fList.length);
      logFn(`--- Target: ${file.path} ---`);
      await scrollTop();
      let tgt=null,tgtEl=null,sStable=0;
      while(sStable<5&&!tgt){
        const nodes=getNodes();
        const found=nodes.find(n=>n.fullPath===file.path);
        if(found){tgt=found.clickTarget;tgtEl=found.el;break;}
        const moved=await scrollStep(700);
        if(!moved)sStable++;else sStable=0;
      }
      let content="";
      let retryCount=0;
      while(retryCount<2&&!content){
        if(tgt){
          tgtEl.scrollIntoView({block:"center"});
          tgt.click();
          await sleep(70);
          try{
            content=await readMonacoContent(file.name)||"";
            if(content)logFn("Read from Monaco API.");
          }catch(e){logFn(`Monaco error: ${e.message}`);}
        }
        if(!content){
          retryCount++;
          if(retryCount<2){logFn(`Retry ${retryCount} for ${file.name}...`);await sleep(300);}
        }
      }
      if(content){
        try{
          let dH=root;
          for(const p of file.dir)dH=await dH.getDirectoryHandle(sanitize(p),{create:true});
          const fH=await dH.getFileHandle(sanitize(file.name),{create:true});
          const w=await fH.createWritable();
          await w.write(content);
          await w.close();
          saved++;
          logFn(`Saved: ${file.name}`);
        }catch(e){
          logFn(`Save error: ${e.message}`);
          failed.push(file.path);
        }
      }else{
        logFn(`ERROR: No content after retries — ${file.path}`);
        failed.push(file.path);
      }
    }
    progress(fList.length,fList.length);
    stage("הושלם ✅");
    logFn(`Done! Saved ${saved}/${fList.length}`);
    try{
      const logFH=await root.getFileHandle("extraction_log.txt",{create:true});
      const logW=await logFH.createWritable();
      await logW.write(fullLog);
      await logW.close();
    }catch(e){}
    setTimeout(()=>{
      panel.remove();
      alert(`✅ החילוץ הסתיים!\nנשמרו ${saved}/${fList.length} קבצים.\n${failed.length?"נכשלו:\n"+failed.join("\n"):""}`);
    },1200);
    })();
    עזרה הדדית - בינה מלאכותית

  • להורדה | סימניה להורדת קבצי הקוד מ Base44
    צ צמצם

    @רציונל כתב:

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

    והם אכן חסמו...😕

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

  • להורדה | סימניה להורדת קבצי הקוד מ Base44
    צ צמצם

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

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

  • להורדה | סימניה להורדת קבצי הקוד מ Base44
    צ צמצם

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

    ביקשתי מקלוד שישנה את הקוד שהוא לא מחכה 2 שניות אלא מחכה עד שהדף נטען וזה אכן הוריד הרבה יותר מהר.

    מצרף את הקוד ששיניתי.

    javascript:(async()=>{if(document.querySelector("html").className.includes("translated"))return alert("⚠ בטל תרגום דפדפן.");const sleep=ms=>new Promise(r=>setTimeout(r,ms));const waitFor=async(checkFn,{maxWait=3000,interval=50,stableChecks=2}={})=>{ const start=Date.now(); let last=undefined,stable=0; while(Date.now()-start<maxWait){ let val; try{val=await checkFn();}catch(e){val=undefined;} if(val!==undefined&&val===last){ stable++; if(stable>=stableChecks)return val; }else{ stable=0; } last=val; await sleep(interval); } return last;};const nav=document.querySelector('nav.flex-1.overflow-y-auto');if(!nav)return alert("❌ לא נמצא עץ קבצים. ודא שאתה בלשונית 'Code'.");let root;try{root=await window.showDirectoryPicker({mode:"readwrite"})}catch{return}const panel=document.createElement("div");panel.style="position:fixed;top:12px;left:50%;transform:translateX(-50%);width:450px;background:#111;color:#fff;font:13px system-ui;padding:16px;border-radius:14px;z-index:999999;direction:rtl;box-shadow:0 10px 30px rgba(0,0,0,0.8);border:1px solid #333";panel.innerHTML=%60<div style="display:flex;gap:10px;align-items:center;margin-bottom:12px"><div style="width:16px;height:16px;border:3px solid #444;border-top-color:#4caf50;border-radius:50%;animation:spin 1s linear infinite"></div><b style="font-size:15px">Base44 Extractor V14 (Fast)</b></div><div id="stg" style="color:#aaa;margin-bottom:8px">מאתחל...</div><div style="background:#222;height:12px;border-radius:6px;overflow:hidden"><div id="bar" style="height:100%;width:0%;background:#4caf50;transition:width 0.3s"></div></div><div id="pct" style="margin-top:6px;color:#888;font-size:12px">0%</div><div id="logArea" style="margin-top:10px;height:150px;background:#000;border:1px solid #444;border-radius:6px;overflow-y:auto;font-family:monospace;font-size:11px;padding:6px;text-align:left;direction:ltr;white-space:nowrap;color:#0f0;"></div><style>@keyframes spin{to{transform:rotate(360deg)}}</style>%60;document.body.appendChild(panel);const stage=t=>{panel.querySelector("#stg").textContent=t;};let fullLog="";const logFn=m=>{console.log(m);fullLog+=m+"\r\n";const l=panel.querySelector("#logArea");if(l){l.innerHTML+='<div>> '+m+'</div>';l.scrollTop=l.scrollHeight;}};const progress=(d,t)=>{const p=Math.floor((d/t)*100);panel.querySelector("#bar").style.width=p+"%";panel.querySelector("#pct").textContent=%60${p}% (${d} מתוך ${t} קבצים)%60;};logFn("System Initialized V14 - Base44 Native Engine (Dynamic Wait).");const getNodes=()=>{ return Array.from(nav.querySelectorAll("button")).map(btn=>{ const span=btn.querySelector("span.truncate"); if(!span)return null; const text=span.innerText.trim(); const pl=parseInt(btn.style.paddingLeft||"8"); const chevron=btn.querySelector("svg.lucide-chevron-down"); const isFolder=!!chevron; const isClosed=isFolder&&chevron.classList.contains("-rotate-90"); return{btn,text,depth:pl,isFolder,isClosed,isFile:!isFolder}; }).filter(Boolean);};const scrollTop=async()=>{ logFn("Scrolling tree to top..."); nav.scrollTop=0; await waitFor(()=>nav.scrollTop,{maxWait:600,interval:50,stableChecks:2});};const scrollStep=async(px=300)=>{ const oldScroll=nav.scrollTop; nav.scrollTop+=px; await waitFor(()=>nav.scrollTop,{maxWait:400,interval:40,stableChecks:2}); return nav.scrollTop!==oldScroll;};stage("פותח תיקיות (Native)...");await scrollTop();let expStable=0,attempts=new Map();while(expStable<5){ const nodes=getNodes(); let expanded=!1; for(const n of nodes){ if(n.isClosed){ const tries=attempts.get(n.text)||0; if(tries<3){ attempts.set(n.text,tries+1); logFn(%60Expanding folder: ${n.text}%60); n.btn.scrollIntoView({block:"center"}); await waitFor(()=>true,{maxWait:250,interval:50,stableChecks:1}); const beforeCount=nav.querySelectorAll("button").length; n.btn.click(); await waitFor(()=>nav.querySelectorAll("button").length!==beforeCount?nav.querySelectorAll("button").length:undefined,{maxWait:800,interval:40,stableChecks:1}); expanded=!0; expStable=0; break; } } } if(!expanded){ const moved=await scrollStep(300); if(!moved)expStable++;else expStable=0; }}stage("ממפה פרויקט...");await scrollTop();let cStk=[],mappedFiles=new Map(),mapStable=0;while(mapStable<5){ const nodes=getNodes(); for(const n of nodes){ while(cStk.length>0&&cStk[cStk.length-1].depth>=n.depth)cStk.pop(); cStk.push(n); if(n.isFile){ const fullPath=cStk.map(p=>p.text).join("/"); if(!mappedFiles.has(fullPath)){ const saveName=n.text.includes(".")?n.text:n.text+".js"; mappedFiles.set(fullPath,{name:saveName,path:fullPath,dir:cStk.slice(0,-1).map(p=>p.text)}); logFn(%60Mapped: ${fullPath}%60); } } } const moved=await scrollStep(300); if(!moved)mapStable++;else mapStable=0;}const fList=Array.from(mappedFiles.values());logFn(%60Mapping complete. Found ${fList.length} files.%60);if(!fList.length){panel.remove();return alert("לא נמצאו קבצים. נסה לרענן את העמוד.");}const sanitize=s=>s.replace(/[<>:"\/\\|?*]/g,"_");const readMonacoContent=async(fileName)=>{ return await waitFor(()=>{ if(window.monaco?.editor){ const m=window.monaco.editor.getModels(); if(m.length){ const md=m.find(x=>x.uri.path.toLowerCase().endsWith(fileName.toLowerCase()))||m[0]; const val=md.getValue(); if(val)return val; } } return undefined; },{maxWait:3000,interval:50,stableChecks:2});};let saved=0,failed=[];for(let i=0;i<fList.length;i++){ const file=fList[i]; stage(%60מוריד: ${file.name}%60); progress(i,fList.length); logFn(%60--- Target: ${file.path} ---%60); await scrollTop(); let tgt=null,sStable=0; cStk=[]; while(sStable<5&&!tgt){ const nodes=getNodes(); for(const n of nodes){ while(cStk.length>0&&cStk[cStk.length-1].depth>=n.depth)cStk.pop(); cStk.push(n); const cp=cStk.map(p=>p.text).join("/"); if(cp===file.path){tgt=n.btn;break;} } if(tgt)break; const moved=await scrollStep(300); if(!moved)sStable++;else sStable=0; } if(tgt){ tgt.scrollIntoView({block:"center"}); await waitFor(()=>true,{maxWait:250,interval:50,stableChecks:1}); logFn(%60Clicking file...%60); tgt.click(); await sleep(120); let content=""; try{ content=await readMonacoContent(file.name)||""; if(content)logFn("Read from Monaco API."); }catch(e){logFn(%60Monaco error: ${e.message}%60);} if(content){ try{ let dH=root; for(const p of file.dir)dH=await dH.getDirectoryHandle(sanitize(p),{create:true}); const fH=await dH.getFileHandle(sanitize(file.name),{create:true}); const w=await fH.createWritable(); await w.write(content); await w.close(); saved++; logFn(%60Saved: ${file.name}%60); }catch(e){ logFn(%60Save error: ${e.message}%60); failed.push(file.path); } }else{ logFn("ERROR: No content."); failed.push(file.path); } }else{ logFn("ERROR: Node not found in tree."); failed.push(file.path); }}progress(fList.length,fList.length);stage("הושלם ✅");logFn(%60Done! Saved ${saved}/${fList.length}%60);try{ const logFH=await root.getFileHandle("extraction_log.txt",{create:true}); const logW=await logFH.createWritable(); await logW.write(fullLog); await logW.close();}catch(e){}setTimeout(()=>{ panel.remove(); alert(%60✅ החילוץ הסתיים!\nנשמרו ${saved}/${fList.length} קבצים.\n${failed.length?"נכשלו:\n"+failed.join("\n"):""}%60);},1500);})();
    עזרה הדדית - בינה מלאכותית

  • המלצה | חדש חדש!! צ'אט ישיר בין מחשבים כולל שיחות וידאו ואודיו והעברת קבצים ישירה פתוח לכולם!!!!
    צ צמצם

    @רוטב-שום גם אם אתה מרענן את הדף?

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

  • המלצה | חדש חדש!! צ'אט ישיר בין מחשבים כולל שיחות וידאו ואודיו והעברת קבצים ישירה פתוח לכולם!!!!
    צ צמצם

    @רוטב-שום לא יודע...
    אצלי זה עובד מצוין
    209e53fa-c3c9-4b62-9f99-6fa5870e47ef-image.jpeg

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

  • המלצה | חדש חדש!! צ'אט ישיר בין מחשבים כולל שיחות וידאו ואודיו והעברת קבצים ישירה פתוח לכולם!!!!
    צ צמצם

    @רוטב-שום תחליף את סיומת הקובץ ל-HTML

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

  • להורדה | SmartiAI - סוכן AI מתקדם ל-Windows, גרסה V0.69.0 - עדכון 08.06.2026
    צ צמצם

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

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

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

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