Nástroj stáhne seznam BNL souborů z oficiální stránky Kouzelné čtení – soubory ke stažení, uloží manifest do CSV a volitelně soubory stáhne z hostitele albidownload.eu.
Stránka běží na Next.js a odkazy na .bnl v HTML při běžném curl nejsou — skript proto používá Playwright (Chromium) k načtení stránky jako v prohlížeči.
Podle oficiálního návodu Jak nahrát audio soubor platí mimo jiné: při aktualizaci nejdřív smaž z tužky původní soubor, pak nahraj nový. Dvě různé verze / dva podobné .bnl ke stejné knize na kartě v tužce mohou způsobit, že kniha nebude fungovat. Některé tituly jsou navíc v .zip — před nahráním je musíš rozbalit a do tužky kopírovat až .bnl.
Skript po načtení seznamu upozorní, pokud:
- u stejného názvu knihy (po sjednocení mezer a uvozovek) jsou více různých
.bnlsouborů, nebo - stejné číselné id (z názvu souboru, např. přípona
_4043) vystupuje u více různých názvů souborů — Albi nemá jednotné pojmenování, jde ale často o stejný produkt; na tužce má být jen jeden soubor.
Pokud je stejný název .bnl souboru v nabídce víckrát (jiná cesta ke stažení nebo jiný nadpis stránky), do výpisu i CSV se uloží jen první výskyt — nestahují se duplicitní kopie pod různými URL.
- Python 3.10+ (doporučeno 3.11 nebo 3.12)
- Připojení k internetu
- První spuštění: nainstalovaný Chromium pro Playwright (viz níže)
V kořeni projektu (složka s download.py):
python3 -m venv .venvmacOS / Linux
source .venv/bin/activate
pip install -r requirements.txt
python -m playwright install chromiumWindows (PowerShell nebo CMD)
.venv\Scripts\activate
pip install -r requirements.txt
python -m playwright install chromiumPříkaz playwright install chromium stáhne prohlížeč pro automatizaci — stačí jednou (nebo po přeinstalaci prostředí).
Aktivuj virtuální prostředí (pokud ještě není aktivní):
source .venv/bin/activate
python download.pyNebo použij přiložený skript (vytvoří .venv, nainstaluje závislosti a spustí skript):
chmod +x run.sh
./run.shV CMD nebo PowerShell z kořene projektu:
.venv\Scripts\activate
python download.pyNebo dvojklik / z příkazové řádky:
run.bat(run.bat aktivuje venv, doinstaluje závislosti a spustí download.py.)
- Načte stránku v Chromium, projde stránkování a vytáhne odkazy na
.bnl. - Uloží
albi_downloads.csv(manifest). - Vypíše přehled nalezených položek.
- V interaktivním terminálu se zeptá, zda chceš soubory stáhnout a do jaké složky (výchozí je
./downloads), případně na další složky, kde už.bnlmáš (např. karta) — ty se při stahování přeskočí. - Při potvrzení stáhne jen chybějící soubory (předem vypíše plán: kolik z celkového počtu je třeba doplnit).
Výchozí chování (bez --no-skip-existing): nestahuje se nic, co už jako neprázdný soubor existuje v --out, nebo v dodaných složkách (--skip-if-present-in, proměnná ALBI_SKIP_IF_PRESENT_IN, soubor albi_skip_dirs.txt v kořeni projektu — jedna cesta na řádek, řádky začínající # se ignorují). Více cest v proměnné odděl |. Úplné znovustažení do --out vynutíš --no-skip-existing.
| Přepínač | Význam |
|---|---|
--download |
Stáhnout do --out; s --no-interactive bez dotazů. V TTY se může zeptat na složky s už nahranými .bnl. |
--out SLOŽKA |
Cíl pro .bnl (výchozí downloads). |
--csv SOUBOR |
Jméno CSV manifestu (výchozí albi_downloads.csv). |
--no-interactive |
Jen CSV + přehled, žádné input() (např. v CI). |
--headed |
Zobrazí okno prohlížeče (ladění). |
--skip-if-present-in DIR |
Nestahovat soubor, pokud už existuje (nenulová velikost) v DIR. Opakováním přidáš další kořeny (např. záloha + připojená karta). |
--no-skip-existing |
Stáhnout znovu i když už stejný soubor leží v --out. |
--no-extra-skip-sources |
Ignorovat ALBI_SKIP_IF_PRESENT_IN a albi_skip_dirs.txt (jen CLI a interaktivní cesty). |
Když už máš část .bnl na kartě (nebo v záloze) a chceš doplnit jen to, co v cílové složce na disku ještě není, předej cestu ke kartě (např. připojený svazek na Macu):
python download.py --download --out ~/AlbiBNL \
--skip-if-present-in /Volumes/JMENO_KARTYNebo jednorázově v shellu (Mac/Linux):
export ALBI_SKIP_IF_PRESENT_IN="/Volumes/JMENO_KARTY"
python download.py --download --out ~/AlbiBNLSkript nejdřív zkontroluje tyto složky: pokud tam stejnojmenný soubor už je a není prázdný, nestahuje ho znovu. Pak platí pravidlo pro --out: existující lokální kopie se také přeskakuje (pokud nepoužiješ --no-skip-existing). HTTP stahování proběhne jen pro řádky, které opravdu chybí — na konci uvidíš souhrn stažených vs. přeskočených.
- „No .bnl entries found“ — zkontroluj síť; případně
python -m playwright install chromiuma znovu spusť, nebo vyzkoušej--headed. - Chyba importu
playwright— aktivuj.venva znovupip install -r requirements.txt.
Zdrojový kód: github.com/pavelprokes/AlbiDownloader
Klíčová slova / témata (GitHub Topics): na stránce repa v Settings → General → Topics můžeš doplnit např.
python, albi, kouzelne-cteni, bnl, downloader, playwright, web-scraping, czech, audio, audiobook — přehled je také v souboru pyproject.toml u pole keywords.
S GitHub CLI (po gh auth login):
gh repo edit pavelprokes/AlbiDownloader --add-topic python --add-topic albi --add-topic kouzelne-cteni --add-topic bnl --add-topic downloader --add-topic playwright --add-topic web-scraping --add-topic czech --add-topic audiogit clone https://github.com/pavelprokes/AlbiDownloader.git
cd AlbiDownloaderPoužívej v souladu s podmínkami webu a jen pro osobní zálohování obsahu, ke kterému máš oprávnění. Tento projekt není oficiální produkt Albi.