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:
2026-03-24 02:10:33 +02:00
parent 7b18e8fc41
commit 45e72bc89b
2 changed files with 31 additions and 2 deletions

View File

@@ -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"],

View File

@@ -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