Closed JakubAndrysek closed 4 years ago
tohle se mi zatím nikdy nestalo (4GB uplně v pohodě)
Ahoj,
takže chyba není ve velkých souborech, ale v "některých souborech". Konkrétně funkce get_download_link(url) appendne za url ?do=slowDirectDownload a očekává že vrácená response má Location: na skutečné url; to ale vypadá, že není vždy pravda. Na některých souborech to prostě vrátí stejnou URL jako na vstupu (ta poté neobsahuje soubor a sletí to trošku podivně na místě v reportu), v těle odpovědi pak <h1>Redirect</h1>
. Proč, to nevím, protože ani nevím kde vzniklo API slowDirectDownload ( @stinovlas ?)
API slowDirectDownload
vzniklo při nějakém výročí ulozto. Od té doby jde některé soubory stáhnotu přes něj (a ne starým způsobem) a některé jen starým způsobem (a ne přes něj). Obecně, zatím se mi jakýkoliv soubor bez ohledu na velikost podařilo stáhnout buď s aktuálním obsahem master
, nebo se stavem z commitu 15d72c4
(před přechodem na slowDirectDownload
).
Chtělo by to najít si čas a podle obsahu stránky rozlišit o který typ stahování se jedná a podle toho zvolit nový nebo starý způsob downloadu (tedy jakási fůze 15d72c4
a e15021c
+ rozlišovací mechanismus).
Ano, no když slowDirectDownload nezafunguje, pozná se to snadno ještě v té funkci get_download_link (třeba tak, že vrátí stejnou URL jako dostala; nebo že na té vrácené URL je html dokument a né stahovaný soubor), takže by to neměl být problém.
Zubr, otestováno, díky!
Ahoj, zkoušel jsem stahovat filmy pomocí tohoto scriptu, ale při pokusu stažení souboru většího asi 250MB mi na Linuxu (Ubuntu 18.04) vypíše error:
kuba@JA-Linux:~/Downloads/ulozto$ ./ulozto_downloader.py --parts 15 'https://ulozto.cz/file/GKc25cVhxWQV/the-100-s06e13-the-blood-of-sanctum-720p-cz-titulky-mkv' Starting downloading for url 'https://ulozto.cz/file/GKc25cVhxWQV/the-100-s06e13-the-blood-of-sanctum-720p-cz-titulky-mkv' Getting info (filename, filesize, ...) Traceback (most recent call last): File "./ulozto_downloader.py", line 233, in <module> download(args.url, args.parts, args.output) File "./ulozto_downloader.py", line 149, in download total_size = int(head.headers['Content-Length']) File "/usr/lib/python3/dist-packages/requests/structures.py", line 54, in __getitem__ return self._store[key.lower()][1] KeyError: 'content-length'