בקשת מידע | איך להוריד בבת אחת הרבה קבצים מאתר
-
צ צור סימן נושא זה כשאלה
-
@צור כתב בבקשת מידע | איך להוריד בבת אחת הרבה קבצים מאתר:
מעוניין להוריד את כל הקבצי סודוקו מהאתר הזה בבת אחת איך ניתן?
קח:
יש לך מזל שאני אוהב את הדברים האלו ושהבינה יכולה לעזור לעשות את זה בקלות
צריך להריץ את הקוד הבא בקונסול בדפדפן, ולאשר לאתר הורדת קבצים מרובים.
כמו כן כיון שזה אתר לא מאובטח צריך לאשר בהגדרות לאתרים תוכן לא מאובטח.// --- שלב 1: טעינת הספריות הנדרשות (jsPDF ו-html2canvas) --- function loadScript(url) { return new Promise((resolve, reject) => { if (document.querySelector(`script[src="${url}"]`)) { return resolve(); } const script = document.createElement('script'); script.src = url; script.onload = resolve; script.onerror = reject; document.head.appendChild(script); }); } async function loadDependencies() { console.log('טוען ספריות חיצוניות (jsPDF, html2canvas)...'); try { await Promise.all([ loadScript('https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js'), loadScript('https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js') ]); console.log('הספריות נטענו בהצלחה!'); return true; } catch (error) { console.error('שגיאה קריטית: לא ניתן היה לטעון את הספריות.', error); return false; } } // --- שלב 2: פונקציה להורדת קישור בודד כ-PDF --- async function downloadLinkAsPdf(url, filename) { try { // א. הורדת תוכן ה-HTML של הקישור const response = await fetch(url); const htmlContent = await response.text(); // ב. יצירת אלמנט זמני וממוקם מחוץ למסך const container = document.createElement('div'); container.style.position = 'absolute'; container.style.left = '-9999px'; container.style.width = '800px'; container.innerHTML = htmlContent; document.body.appendChild(container); await new Promise(resolve => setTimeout(resolve, 100)); // ג. איתור האלמנט הרצוי + מנגנון גיבוי let targetElement; const uniqueSudokuTable = container.querySelector('table[border="6"]'); if (uniqueSudokuTable && uniqueSudokuTable.closest('tbody')) { targetElement = uniqueSudokuTable.closest('tbody'); // console.log('נמצא אלמנט סודוקו ספציפי.'); // ניתן להסיר לוג זה כדי לא להציף את הקונסול } else { console.warn(`לא זוהה אלמנט סודוקו ספציפי. חוזר למצב גיבוי של הדפסת כל הדף עבור: ${filename}`); targetElement = container.querySelector('body') || container; } // ד. המרה של האלמנט לתמונת קנבס const canvas = await html2canvas(targetElement); // ה. יצירת מסמך PDF והוספת התמונה אליו const { jsPDF } = window.jspdf; const pdf = new jsPDF({ orientation: 'p', unit: 'mm', format: 'a4' }); const imgData = canvas.toDataURL('image/png'); const pdfWidth = pdf.internal.pageSize.getWidth() - 20; const pdfHeight = (canvas.height * pdfWidth) / canvas.width; pdf.addImage(imgData, 'PNG', 10, 10, pdfWidth, pdfHeight); // ו. שמירת קובץ ה-PDF pdf.save(filename); // ז. ניקוי האלמנט הזמני מהדף document.body.removeChild(container); // console.log(`ההורדה הושלמה: ${filename}`); // ניתן להסיר לוג זה } catch (error) { console.error(`שגיאה בהורדת הקובץ ${filename}:`, error); } } // --- שלב 3: התהליך הראשי --- async function main() { const librariesLoaded = await loadDependencies(); if (!librariesLoaded) return; // *** השינוי נמצא כאן *** // איתור כל הקישורים ללא הגבלה const allSudokuLinks = document.querySelectorAll('a[href*="sudoku-print.php"]'); if (allSudokuLinks.length === 0) { console.log('לא נמצאו קישורי סודוקו בעמוד.'); return; } console.log(`נמצאו ${allSudokuLinks.length} קישורים. מתחיל בתהליך ההורדה המלא...`); // מעבר סדרתי על כל הקישורים שנמצאו for (const [index, link] of allSudokuLinks.entries()) { const sudokuId = link.href.split('id=')[1] || `file_${index + 1}`; const filename = `sudoku-${sudokuId}.pdf`; console.log(`--- מעבד קובץ ${index + 1}/${allSudokuLinks.length}: ${filename} ---`); await downloadLinkAsPdf(link.href, filename); // המתנה קצרה למניעת עומס על הרשת והדפדפן await new Promise(resolve => setTimeout(resolve, 500)); } console.log(`--- סיום התהליך! כל ${allSudokuLinks.length} הקבצים הורדו. ---`); } // הרצת התהליך main(); -
@צור כתב בבקשת מידע | איך להוריד בבת אחת הרבה קבצים מאתר:
מעוניין להוריד את כל הקבצי סודוקו מהאתר הזה בבת אחת איך ניתן?
קח:
יש לך מזל שאני אוהב את הדברים האלו ושהבינה יכולה לעזור לעשות את זה בקלות
צריך להריץ את הקוד הבא בקונסול בדפדפן, ולאשר לאתר הורדת קבצים מרובים.
כמו כן כיון שזה אתר לא מאובטח צריך לאשר בהגדרות לאתרים תוכן לא מאובטח.// --- שלב 1: טעינת הספריות הנדרשות (jsPDF ו-html2canvas) --- function loadScript(url) { return new Promise((resolve, reject) => { if (document.querySelector(`script[src="${url}"]`)) { return resolve(); } const script = document.createElement('script'); script.src = url; script.onload = resolve; script.onerror = reject; document.head.appendChild(script); }); } async function loadDependencies() { console.log('טוען ספריות חיצוניות (jsPDF, html2canvas)...'); try { await Promise.all([ loadScript('https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js'), loadScript('https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js') ]); console.log('הספריות נטענו בהצלחה!'); return true; } catch (error) { console.error('שגיאה קריטית: לא ניתן היה לטעון את הספריות.', error); return false; } } // --- שלב 2: פונקציה להורדת קישור בודד כ-PDF --- async function downloadLinkAsPdf(url, filename) { try { // א. הורדת תוכן ה-HTML של הקישור const response = await fetch(url); const htmlContent = await response.text(); // ב. יצירת אלמנט זמני וממוקם מחוץ למסך const container = document.createElement('div'); container.style.position = 'absolute'; container.style.left = '-9999px'; container.style.width = '800px'; container.innerHTML = htmlContent; document.body.appendChild(container); await new Promise(resolve => setTimeout(resolve, 100)); // ג. איתור האלמנט הרצוי + מנגנון גיבוי let targetElement; const uniqueSudokuTable = container.querySelector('table[border="6"]'); if (uniqueSudokuTable && uniqueSudokuTable.closest('tbody')) { targetElement = uniqueSudokuTable.closest('tbody'); // console.log('נמצא אלמנט סודוקו ספציפי.'); // ניתן להסיר לוג זה כדי לא להציף את הקונסול } else { console.warn(`לא זוהה אלמנט סודוקו ספציפי. חוזר למצב גיבוי של הדפסת כל הדף עבור: ${filename}`); targetElement = container.querySelector('body') || container; } // ד. המרה של האלמנט לתמונת קנבס const canvas = await html2canvas(targetElement); // ה. יצירת מסמך PDF והוספת התמונה אליו const { jsPDF } = window.jspdf; const pdf = new jsPDF({ orientation: 'p', unit: 'mm', format: 'a4' }); const imgData = canvas.toDataURL('image/png'); const pdfWidth = pdf.internal.pageSize.getWidth() - 20; const pdfHeight = (canvas.height * pdfWidth) / canvas.width; pdf.addImage(imgData, 'PNG', 10, 10, pdfWidth, pdfHeight); // ו. שמירת קובץ ה-PDF pdf.save(filename); // ז. ניקוי האלמנט הזמני מהדף document.body.removeChild(container); // console.log(`ההורדה הושלמה: ${filename}`); // ניתן להסיר לוג זה } catch (error) { console.error(`שגיאה בהורדת הקובץ ${filename}:`, error); } } // --- שלב 3: התהליך הראשי --- async function main() { const librariesLoaded = await loadDependencies(); if (!librariesLoaded) return; // *** השינוי נמצא כאן *** // איתור כל הקישורים ללא הגבלה const allSudokuLinks = document.querySelectorAll('a[href*="sudoku-print.php"]'); if (allSudokuLinks.length === 0) { console.log('לא נמצאו קישורי סודוקו בעמוד.'); return; } console.log(`נמצאו ${allSudokuLinks.length} קישורים. מתחיל בתהליך ההורדה המלא...`); // מעבר סדרתי על כל הקישורים שנמצאו for (const [index, link] of allSudokuLinks.entries()) { const sudokuId = link.href.split('id=')[1] || `file_${index + 1}`; const filename = `sudoku-${sudokuId}.pdf`; console.log(`--- מעבד קובץ ${index + 1}/${allSudokuLinks.length}: ${filename} ---`); await downloadLinkAsPdf(link.href, filename); // המתנה קצרה למניעת עומס על הרשת והדפדפן await new Promise(resolve => setTimeout(resolve, 500)); } console.log(`--- סיום התהליך! כל ${allSudokuLinks.length} הקבצים הורדו. ---`); } // הרצת התהליך main(); -
@צור כתב בבקשת מידע | איך להוריד בבת אחת הרבה קבצים מאתר:
מעוניין להוריד את כל הקבצי סודוקו מהאתר הזה בבת אחת איך ניתן?
קח:
יש לך מזל שאני אוהב את הדברים האלו ושהבינה יכולה לעזור לעשות את זה בקלות
צריך להריץ את הקוד הבא בקונסול בדפדפן, ולאשר לאתר הורדת קבצים מרובים.
כמו כן כיון שזה אתר לא מאובטח צריך לאשר בהגדרות לאתרים תוכן לא מאובטח.// --- שלב 1: טעינת הספריות הנדרשות (jsPDF ו-html2canvas) --- function loadScript(url) { return new Promise((resolve, reject) => { if (document.querySelector(`script[src="${url}"]`)) { return resolve(); } const script = document.createElement('script'); script.src = url; script.onload = resolve; script.onerror = reject; document.head.appendChild(script); }); } async function loadDependencies() { console.log('טוען ספריות חיצוניות (jsPDF, html2canvas)...'); try { await Promise.all([ loadScript('https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js'), loadScript('https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js') ]); console.log('הספריות נטענו בהצלחה!'); return true; } catch (error) { console.error('שגיאה קריטית: לא ניתן היה לטעון את הספריות.', error); return false; } } // --- שלב 2: פונקציה להורדת קישור בודד כ-PDF --- async function downloadLinkAsPdf(url, filename) { try { // א. הורדת תוכן ה-HTML של הקישור const response = await fetch(url); const htmlContent = await response.text(); // ב. יצירת אלמנט זמני וממוקם מחוץ למסך const container = document.createElement('div'); container.style.position = 'absolute'; container.style.left = '-9999px'; container.style.width = '800px'; container.innerHTML = htmlContent; document.body.appendChild(container); await new Promise(resolve => setTimeout(resolve, 100)); // ג. איתור האלמנט הרצוי + מנגנון גיבוי let targetElement; const uniqueSudokuTable = container.querySelector('table[border="6"]'); if (uniqueSudokuTable && uniqueSudokuTable.closest('tbody')) { targetElement = uniqueSudokuTable.closest('tbody'); // console.log('נמצא אלמנט סודוקו ספציפי.'); // ניתן להסיר לוג זה כדי לא להציף את הקונסול } else { console.warn(`לא זוהה אלמנט סודוקו ספציפי. חוזר למצב גיבוי של הדפסת כל הדף עבור: ${filename}`); targetElement = container.querySelector('body') || container; } // ד. המרה של האלמנט לתמונת קנבס const canvas = await html2canvas(targetElement); // ה. יצירת מסמך PDF והוספת התמונה אליו const { jsPDF } = window.jspdf; const pdf = new jsPDF({ orientation: 'p', unit: 'mm', format: 'a4' }); const imgData = canvas.toDataURL('image/png'); const pdfWidth = pdf.internal.pageSize.getWidth() - 20; const pdfHeight = (canvas.height * pdfWidth) / canvas.width; pdf.addImage(imgData, 'PNG', 10, 10, pdfWidth, pdfHeight); // ו. שמירת קובץ ה-PDF pdf.save(filename); // ז. ניקוי האלמנט הזמני מהדף document.body.removeChild(container); // console.log(`ההורדה הושלמה: ${filename}`); // ניתן להסיר לוג זה } catch (error) { console.error(`שגיאה בהורדת הקובץ ${filename}:`, error); } } // --- שלב 3: התהליך הראשי --- async function main() { const librariesLoaded = await loadDependencies(); if (!librariesLoaded) return; // *** השינוי נמצא כאן *** // איתור כל הקישורים ללא הגבלה const allSudokuLinks = document.querySelectorAll('a[href*="sudoku-print.php"]'); if (allSudokuLinks.length === 0) { console.log('לא נמצאו קישורי סודוקו בעמוד.'); return; } console.log(`נמצאו ${allSudokuLinks.length} קישורים. מתחיל בתהליך ההורדה המלא...`); // מעבר סדרתי על כל הקישורים שנמצאו for (const [index, link] of allSudokuLinks.entries()) { const sudokuId = link.href.split('id=')[1] || `file_${index + 1}`; const filename = `sudoku-${sudokuId}.pdf`; console.log(`--- מעבד קובץ ${index + 1}/${allSudokuLinks.length}: ${filename} ---`); await downloadLinkAsPdf(link.href, filename); // המתנה קצרה למניעת עומס על הרשת והדפדפן await new Promise(resolve => setTimeout(resolve, 500)); } console.log(`--- סיום התהליך! כל ${allSudokuLinks.length} הקבצים הורדו. ---`); } // הרצת התהליך main();@ע-ה-דכו-ע אחרי ההרצה מה אמור להיות?
-
@ע-ה-דכו-ע אחרי ההרצה מה אמור להיות?
@צור כתב בבקשת מידע | איך להוריד בבת אחת הרבה קבצים מאתר:
@ע-ה-דכו-ע אחרי ההרצה מה אמור להיות?
שכל הקבצים יהיו בתיקיית ההורדות שלך
-
צ צור סימן נושא זה כנפתר