feat: adauga --modules filter si la download.py
Parametrul din run.bat (ex: 4-5) era transmis doar la transcribe.py. Acum download.py primeste acelasi filtru si descarca doar modulele specificate. Sintaxa acceptata: '4-5', '1,3', '1-3,5'. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
26
download.py
26
download.py
@@ -49,6 +49,19 @@ def login(session: requests.Session, email: str, password: str) -> bool:
|
||||
return True
|
||||
|
||||
|
||||
def parse_module_filter(arg: str) -> set[int]:
|
||||
"""Parse module filter like '1-3' or '4,5' or '1-3,5' into a set of 1-based indices."""
|
||||
result = set()
|
||||
for part in arg.split(","):
|
||||
part = part.strip()
|
||||
if "-" in part:
|
||||
a, b = part.split("-", 1)
|
||||
result.update(range(int(a), int(b) + 1))
|
||||
else:
|
||||
result.add(int(part))
|
||||
return result
|
||||
|
||||
|
||||
def discover_modules(session: requests.Session) -> list[dict]:
|
||||
"""Fetch course page and return list of {name, url, module_id}."""
|
||||
resp = session.get(COURSE_URL)
|
||||
@@ -157,6 +170,14 @@ def main():
|
||||
log.error("Set COURSE_USERNAME and COURSE_PASSWORD in .env")
|
||||
sys.exit(1)
|
||||
|
||||
# Parse --modules filter (e.g. "4-5" or "1,3,5")
|
||||
module_filter = None
|
||||
if "--modules" in sys.argv:
|
||||
idx = sys.argv.index("--modules")
|
||||
if idx + 1 < len(sys.argv):
|
||||
module_filter = parse_module_filter(sys.argv[idx + 1])
|
||||
log.info(f"Module filter: {sorted(module_filter)}")
|
||||
|
||||
AUDIO_DIR.mkdir(exist_ok=True)
|
||||
|
||||
session = requests.Session()
|
||||
@@ -185,7 +206,10 @@ def main():
|
||||
skipped = 0
|
||||
failed = 0
|
||||
|
||||
for mod in modules:
|
||||
for mod_idx, mod in enumerate(modules, 1):
|
||||
if module_filter and mod_idx not in module_filter:
|
||||
log.info(f" Skipping module {mod_idx}: {mod['name']}")
|
||||
continue
|
||||
lectures = discover_lectures(session, mod)
|
||||
module_entry = {
|
||||
"name": mod["name"],
|
||||
|
||||
5
run.bat
5
run.bat
@@ -265,7 +265,12 @@ echo Done.
|
||||
echo.
|
||||
echo [3/4] Downloading audio files...
|
||||
echo ============================================================
|
||||
if "%~1"=="" (
|
||||
.venv\Scripts\python download.py
|
||||
) else (
|
||||
echo Modules filter: %~1
|
||||
.venv\Scripts\python download.py --modules %~1
|
||||
)
|
||||
if errorlevel 1 (
|
||||
echo.
|
||||
echo WARNING: Some downloads failed. Check download_errors.log
|
||||
|
||||
Reference in New Issue
Block a user