פרויקט זה מאפשר להוריד אתרים באמצעות HTTrack דרך GitHub Actions.
download_course.py מוריד קורס שלם לצפייה אופליין: סרטונים, הנושאים הכתובים,
התרגילים, והמדיה שמשובצת בהם (תמונות וקבצי אודיו).
התוצאה היא עותק של ממשק הקורס עצמו, לא רשימת קישורים: עמוד לכל יחידה עם הנגן והתוכן משולבים, פס היחידות האופקי, וניווט הבא/הקודם (גם במקשי החיצים), ועמוד תוכן־קורס עם הפרקים. העיצוב לא משוחזר ביד — הוא מורד מהאתר: גליונות ה-CSS של ממשק הקורסים ושל תבנית ה-LMS, הפונטים והלוגו נשמרים מקומית וההפניות בתוכם מומרות לנתיבים מקומיים, כך שהעותק נראה כמו האתר גם בלי אינטרנט.
הסקריפט מדלג על קבצים שכבר הורדו, כך שהרצה חוזרת בונה מחדש רק את העמודים.
דרישות: Python 3 בלבד, ו-yt-dlp לסרטונים שקיימים רק ביוטיוב.
הערה: שמות קבצי ה-CSS של התבנית מכילים hash שמתחלף כשהאתר מתעדכן. שם החבילה של
ממשק הקורסים נקרא דינמית, אבל קבצי התבנית מוגדרים ב-THEME_CSS — אם ההורדה
מדווחת empty response או 404 עליהם, צריך לרענן את הרשימה.
ב-madrasafree הסרטונים עצמם ציבוריים, אבל התוכן הכתוב דורש חשבון מחובר שרשום לקורס. לכן יש שני מצבי הפעלה.
מ-DevTools בכרום (F12 → Application → Cookies → courses.madrasafree.com)
מעתיקים את הערך של sessionid:
python download_course.py course-v1:madrasa+course2+2019_1 --sessionid VALUE --out output/course2--dry-run מדפיס את מבנה הקורס בלי להוריד. --no-videos / --no-html
מגבילים למה שצריך.
מריצים בדפדפן מחובר סניפט שאוסף את עץ הקורס ואת התוכן הכתוב המרונדר לקובץ JSON
אחד (window.__blocks מ-/api/courses/v2/blocks/?depth=all, ואז fetch על
student_view_url של כל בלוק html/problem), ומזינים אותו לסקריפט. שאר
ההורדה - סרטונים ומדיה - נעשית מה-CDN הציבורי בלי אימות:
python download_course.py --bundle bundle.json --out output/course2madrasa+course1+2018 (מתחילים), madrasa+course2+2019_1 (ממשיכים),
madrasa+arabic_alphabet+2020_1, madrasa+med1+2020A, madrasa+muallem+2026,
madrasa+maayan1+2020, madrasa+maayan2+2020, madrasa+games+2022,
madrasa+13_videos+may2024.
- עבור ללשונית Actions בריפוזיטורי שלך
- בחר ב-workflow "HTTrack Website Copier"
- לחץ על "Run workflow"
- הזן את הפרטים:
- Website URL: הכנס את כתובת האתר (לדוגמה:
https://example.com) - Project name: שם לפרויקט (אופציונלי, ברירת מחדל: "website")
- Website URL: הכנס את כתובת האתר (לדוגמה:
- לחץ על "Run workflow" הירוק
לאחר שה-workflow מסתיים:
- היכנס לדף ה-workflow run
- גלול למטה ל-Artifacts
- הורד את הקובץ הדחוס עם האתר שהורד
ה-workflow משתמש בהגדרות הבאות:
-v: מצב verbose (מידע מפורט)-%v: הצג התקדמות-N0: אל תשמור קבצים זמניים-s0: אל תעקוב אחרי קישורים חיצוניים-r6: עומק רקורסיה מקסימלי של 6 רמות-%e0: אל תשתמש ב-cache חיצוני
- ריפוזיטורי GitHub (פרטי או ציבורי)
- הרשאות GitHub Actions מופעלות
- הקבצים שמורדים נשמרים ל-7 ימים (ניתן לשנות ב-
retention-days) - זמן ההרצה מוגבל לפי מגבלות GitHub Actions (בדרך כלל 6 שעות)
- שים לב לכבד את תנאי השימוש של האתרים שאתה מוריד