# Ulož.to downloader
Paralelní stahovač z [Ulož.to](http://ulozto.cz) inspirovaný
[Vžum](http://vzum.8u.cz/) (credits to Popcorn) s automatickým louskáním CAPTCHA
kódů pomocí TensorFlow modelu z projektu
[ulozto-captcha-breaker](https://github.com/JanPalasek/ulozto-captcha-breaker)
(credits to Jan Palasek).
Narozdíl od originálního Vžum je tato verze napsaná v Pythonu, dá se provozovat
jednoduše i na Linuxu a zdrojový kód je veřejně dostupný, což umožňuje další
forky a rozšíření do budoucna. Například by mohla vzniknout "serverová" verze
s webovým rozhraním.
**Nápady na další vylepšení (případně rovnou pull requesty) vítány :-)**
## Klíčové vlastnosti
* Sám pozná downloady, kde Ulož.to umožňuje stahovat bez CAPTCHA kódů
* Dokáže přečíst sám CAPTCHA kódy díky projektu
[ulozto-captcha-breaker](https://github.com/JanPalasek/ulozto-captcha-breaker) (thx Jan Palasek)
* Louská kódy pomocí natrénovaného TensorFlow modelu
* Download linky získává přes Tor, aby se vyhnul nové limitaci ze strany Uloz.to
* Umí opakovaně využít stejný stahovací link pro více částí
* Ulož.to nyní (podzim 2020) umožňuje získat jen dva stahovací linky za
minutu, ale stejný link je možné používat po dostahování původní části
opakovaně pro stahování dalších částí
* Umí navazovat přerušená stahování (pokud se zachová stejný počet částí)
* Stahuje přímo do finálního souboru, jednotlivá stahování zapisují na správné
místo v souboru (než program ohlásí dostahováno, je soubor neúplný)
* Konzolový status panel se statistikou úspěšnosti při získávání linků
* Celkový průběh staženo / okamžitá rychlost stahování ve druhém řádku status panelu (save progress monitor)
* Cache soubor download linků pro pokračování nebo opětovné stažení, po restartu se bez nového
získávání download linků rovnou stahuje a nové download linky se získávají jen když jich není
v cache souboru dostatek. Vytváří malý textový soubor `.ucache` jenž je možné použít znovu
a stahovat maximální rychlostí ihned bez získávání linků. Tento soubor má malou velikost
a lze ho např. sdílet. U velkých souborů (100ky MB) je platnost linku 48 hodin.
## Instalace
Nejjednodušší je využít verzi uveřejněnou na [PyPI](https://pypi.org/project/ulozto-downloader/).
Pokud máte platformu, pro který existuje na PyPI validní balíček
[`tflite-runtime`](https://pypi.org/project/tflite-runtime/), můžete rovnou
instalovat speciální target s `[auto-captcha]` a ulehčit si tak instalaci
TensorFlow Lite.
[//]: <> (nazev bude platit jen pro tuto verzi urcenou pro testovani novych funkci a oprav)
```shell
$ pip3 install --upgrade uld
$ pip3 install --upgrade uld[auto-captcha] # <-- doporučeno
```
### Instalace TORu
Program vyžaduje spustitelný tor, protože používá stem a očekává ho v `$PATH`.
* Na Linuxu stačí:
```shell
$ sudo apt install tor
# nebo...
$ yum install tor
# nebo podle vašeho balíčkovacího systému
```
* Na Windows lze instalovat [TorBrowser](https://www.torproject.org/download/)
a dostat `tor.exe` do `%PATH%`
### Instalace TensorFlow Lite (automatické louskání CAPTCHA)
Pokud jste ho instalovali automaticky přes pip, již netřeba nic řešit. Pokud pro
vaší platformu není dostupný na [PyPI](https://pypi.org/project/tflite-runtime/),
postupujte podle instrukcí na stránce [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python),
kde si buď instalujte balík do systému a nebo si stáhněte z odkazu správný Wheel
soubor podle své verze Pythonu (zjistíte zavoláním `python3 -V`).
### Instalace Tensorflow na windows (automatické louskání CAPTCHA)
V současnosti není možné instalovat tflite-runtime na Windows jako je to možné u některých verzí pythonu ma platformě Linux.
Existuje však řešení:
`pip install tensorflow`
Toto je na Windows suštěno při: `pip install uld[auto-captcha]`
Je třeba ale aktuální verzi MSVC knihoven a takto nainstalované zabere vše ~1.4Gb místa ve složkách python balíčků. Poté však `auto-captcha` funguje také.
### Instalace Tkinter (ruční opisování CAPTCHA)
Potřebujete na systému instalovaný Tkinter (bohužel není na PyPI, takže je
potřeba instalovat ručně).
Často už je instalovaný, ale pokud by náhodou nebyl, tak bývá v balíčku
`python3-tk` (případně následujte instrukce na
[webu Tk](https://tkdocs.com/tutorial/install.html)).
## Instalace na dalších platformách
### [Android - Termux](doc/install.md)
## Použití
Od verze 3.1 je v defaultu aktivovaná autodetekce TensorFlow a pokud je instalované,
tak se použije pro automatické louskání louskání CAPTCHA kódů, jinak se vypisuje
ruční opisování. Pro vynucení chování můžete použít přepínače:
* `--auto-captcha` vynutí použití TensorFlow Lite
* `--manual-captcha` vynutí použití manuálního opisování
Pokud není dostupný žádný solver, lze stahovat jen soubory bez CAPTCHA.
Pro volbu počtu částí slouží přepínač `--parts N`, default je 20 částí.
```shell
$ ulozto-downloader --parts 50 "https://ulozto.cz/file/TKvQVDFBEhtL/debian-9-6-0-amd64-netinst-iso"
```
![Ukázka stahování](https://raw.githubusercontent.com/setnicka/ulozto-downloader/master/example-screenshot.png)
Při využití automatického louskání doporučuji využít velký počet částí, klidně
50 (spustíte `ulozto-downloader` a necháte ho pracovat, on si postupně louskne
další stahovací linky a postupně navyšuje počet najednou stahovaných částí).
Raw data
{
"_id": null,
"home_page": "https://github.com/setnicka/ulozto-downloader",
"name": "uld",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "",
"author": "Ji\u0159\u00ed Setni\u010dka, vladodriver and many others..",
"author_email": "setnicka@seznam.cz",
"download_url": "",
"platform": null,
"description": "# Ulo\u017e.to downloader\n\nParaleln\u00ed stahova\u010d z [Ulo\u017e.to](http://ulozto.cz) inspirovan\u00fd\n[V\u017eum](http://vzum.8u.cz/) (credits to Popcorn) s automatick\u00fdm lousk\u00e1n\u00edm CAPTCHA\nk\u00f3d\u016f pomoc\u00ed TensorFlow modelu z projektu\n[ulozto-captcha-breaker](https://github.com/JanPalasek/ulozto-captcha-breaker)\n(credits to Jan Palasek).\n\nNarozd\u00edl od origin\u00e1ln\u00edho V\u017eum je tato verze napsan\u00e1 v Pythonu, d\u00e1 se provozovat\njednodu\u0161e i na Linuxu a zdrojov\u00fd k\u00f3d je ve\u0159ejn\u011b dostupn\u00fd, co\u017e umo\u017e\u0148uje dal\u0161\u00ed\nforky a roz\u0161\u00ed\u0159en\u00ed do budoucna. Nap\u0159\u00edklad by mohla vzniknout \"serverov\u00e1\" verze\ns webov\u00fdm rozhran\u00edm.\n\n**N\u00e1pady na dal\u0161\u00ed vylep\u0161en\u00ed (p\u0159\u00edpadn\u011b rovnou pull requesty) v\u00edt\u00e1ny :-)**\n\n## Kl\u00ed\u010dov\u00e9 vlastnosti\n\n* S\u00e1m pozn\u00e1 downloady, kde Ulo\u017e.to umo\u017e\u0148uje stahovat bez CAPTCHA k\u00f3d\u016f\n* Dok\u00e1\u017ee p\u0159e\u010d\u00edst s\u00e1m CAPTCHA k\u00f3dy d\u00edky projektu\n [ulozto-captcha-breaker](https://github.com/JanPalasek/ulozto-captcha-breaker) (thx Jan Palasek)\n * Lousk\u00e1 k\u00f3dy pomoc\u00ed natr\u00e9novan\u00e9ho TensorFlow modelu\n* Download linky z\u00edsk\u00e1v\u00e1 p\u0159es Tor, aby se vyhnul nov\u00e9 limitaci ze strany Uloz.to\n* Um\u00ed opakovan\u011b vyu\u017e\u00edt stejn\u00fd stahovac\u00ed link pro v\u00edce \u010d\u00e1st\u00ed\n * Ulo\u017e.to nyn\u00ed (podzim 2020) umo\u017e\u0148uje z\u00edskat jen dva stahovac\u00ed linky za\n minutu, ale stejn\u00fd link je mo\u017en\u00e9 pou\u017e\u00edvat po dostahov\u00e1n\u00ed p\u016fvodn\u00ed \u010d\u00e1sti\n opakovan\u011b pro stahov\u00e1n\u00ed dal\u0161\u00edch \u010d\u00e1st\u00ed\n* Um\u00ed navazovat p\u0159eru\u0161en\u00e1 stahov\u00e1n\u00ed (pokud se zachov\u00e1 stejn\u00fd po\u010det \u010d\u00e1st\u00ed)\n* Stahuje p\u0159\u00edmo do fin\u00e1ln\u00edho souboru, jednotliv\u00e1 stahov\u00e1n\u00ed zapisuj\u00ed na spr\u00e1vn\u00e9\n m\u00edsto v souboru (ne\u017e program ohl\u00e1s\u00ed dostahov\u00e1no, je soubor ne\u00fapln\u00fd)\n* Konzolov\u00fd status panel se statistikou \u00fasp\u011b\u0161nosti p\u0159i z\u00edsk\u00e1v\u00e1n\u00ed link\u016f\n* Celkov\u00fd pr\u016fb\u011bh sta\u017eeno / okam\u017eit\u00e1 rychlost stahov\u00e1n\u00ed ve druh\u00e9m \u0159\u00e1dku status panelu (save progress monitor)\n* Cache soubor download link\u016f pro pokra\u010dov\u00e1n\u00ed nebo op\u011btovn\u00e9 sta\u017een\u00ed, po restartu se bez nov\u00e9ho\n z\u00edsk\u00e1v\u00e1n\u00ed download link\u016f rovnou stahuje a nov\u00e9 download linky se z\u00edsk\u00e1vaj\u00ed jen kdy\u017e jich nen\u00ed\n v cache souboru dostatek. Vytv\u00e1\u0159\u00ed mal\u00fd textov\u00fd soubor `.ucache` jen\u017e je mo\u017en\u00e9 pou\u017e\u00edt znovu\n a stahovat maxim\u00e1ln\u00ed rychlost\u00ed ihned bez z\u00edsk\u00e1v\u00e1n\u00ed link\u016f. Tento soubor m\u00e1 malou velikost\n a lze ho nap\u0159. sd\u00edlet. U velk\u00fdch soubor\u016f (100ky MB) je platnost linku 48 hodin.\n\n## Instalace\n\nNejjednodu\u0161\u0161\u00ed je vyu\u017e\u00edt verzi uve\u0159ejn\u011bnou na [PyPI](https://pypi.org/project/ulozto-downloader/).\nPokud m\u00e1te platformu, pro kter\u00fd existuje na PyPI validn\u00ed bal\u00ed\u010dek\n[`tflite-runtime`](https://pypi.org/project/tflite-runtime/), m\u016f\u017eete rovnou\ninstalovat speci\u00e1ln\u00ed target s `[auto-captcha]` a uleh\u010dit si tak instalaci\nTensorFlow Lite.\n\n[//]: <> (nazev bude platit jen pro tuto verzi urcenou pro testovani novych funkci a oprav)\n```shell\n$ pip3 install --upgrade uld\n$ pip3 install --upgrade uld[auto-captcha] # <-- doporu\u010deno\n```\n\n### Instalace TORu\n\nProgram vy\u017eaduje spustiteln\u00fd tor, proto\u017ee pou\u017e\u00edv\u00e1 stem a o\u010dek\u00e1v\u00e1 ho v `$PATH`.\n\n* Na Linuxu sta\u010d\u00ed:\n\n ```shell\n $ sudo apt install tor\n # nebo...\n $ yum install tor\n # nebo podle va\u0161eho bal\u00ed\u010dkovac\u00edho syst\u00e9mu\n ```\n\n* Na Windows lze instalovat [TorBrowser](https://www.torproject.org/download/)\n a dostat `tor.exe` do `%PATH%`\n\n### Instalace TensorFlow Lite (automatick\u00e9 lousk\u00e1n\u00ed CAPTCHA)\n\nPokud jste ho instalovali automaticky p\u0159es pip, ji\u017e net\u0159eba nic \u0159e\u0161it. Pokud pro\nva\u0161\u00ed platformu nen\u00ed dostupn\u00fd na [PyPI](https://pypi.org/project/tflite-runtime/),\npostupujte podle instrukc\u00ed na str\u00e1nce [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python),\nkde si bu\u010f instalujte bal\u00edk do syst\u00e9mu a nebo si st\u00e1hn\u011bte z odkazu spr\u00e1vn\u00fd Wheel\nsoubor podle sv\u00e9 verze Pythonu (zjist\u00edte zavol\u00e1n\u00edm `python3 -V`).\n\n### Instalace Tensorflow na windows (automatick\u00e9 lousk\u00e1n\u00ed CAPTCHA)\n\nV sou\u010dasnosti nen\u00ed mo\u017en\u00e9 instalovat tflite-runtime na Windows jako je to mo\u017en\u00e9 u n\u011bkter\u00fdch verz\u00ed pythonu ma platform\u011b Linux.\nExistuje v\u0161ak \u0159e\u0161en\u00ed:\n\n`pip install tensorflow`\n\nToto je na Windows su\u0161t\u011bno p\u0159i: `pip install uld[auto-captcha]`\nJe t\u0159eba ale aktu\u00e1ln\u00ed verzi MSVC knihoven a takto nainstalovan\u00e9 zabere v\u0161e ~1.4Gb m\u00edsta ve slo\u017ek\u00e1ch python bal\u00ed\u010dk\u016f. Pot\u00e9 v\u0161ak `auto-captcha` funguje tak\u00e9.\n\n### Instalace Tkinter (ru\u010dn\u00ed opisov\u00e1n\u00ed CAPTCHA)\n\nPot\u0159ebujete na syst\u00e9mu instalovan\u00fd Tkinter (bohu\u017eel nen\u00ed na PyPI, tak\u017ee je\npot\u0159eba instalovat ru\u010dn\u011b).\n\n\u010casto u\u017e je instalovan\u00fd, ale pokud by n\u00e1hodou nebyl, tak b\u00fdv\u00e1 v bal\u00ed\u010dku\n`python3-tk` (p\u0159\u00edpadn\u011b n\u00e1sledujte instrukce na\n[webu Tk](https://tkdocs.com/tutorial/install.html)).\n\n## Instalace na dal\u0161\u00edch platform\u00e1ch\n\n### [Android - Termux](doc/install.md)\n\n## Pou\u017eit\u00ed\n\nOd verze 3.1 je v defaultu aktivovan\u00e1 autodetekce TensorFlow a pokud je instalovan\u00e9,\ntak se pou\u017eije pro automatick\u00e9 lousk\u00e1n\u00ed lousk\u00e1n\u00ed CAPTCHA k\u00f3d\u016f, jinak se vypisuje\nru\u010dn\u00ed opisov\u00e1n\u00ed. Pro vynucen\u00ed chov\u00e1n\u00ed m\u016f\u017eete pou\u017e\u00edt p\u0159ep\u00edna\u010de:\n\n* `--auto-captcha` vynut\u00ed pou\u017eit\u00ed TensorFlow Lite\n* `--manual-captcha` vynut\u00ed pou\u017eit\u00ed manu\u00e1ln\u00edho opisov\u00e1n\u00ed\n\nPokud nen\u00ed dostupn\u00fd \u017e\u00e1dn\u00fd solver, lze stahovat jen soubory bez CAPTCHA.\n\nPro volbu po\u010dtu \u010d\u00e1st\u00ed slou\u017e\u00ed p\u0159ep\u00edna\u010d `--parts N`, default je 20 \u010d\u00e1st\u00ed.\n\n```shell\n$ ulozto-downloader --parts 50 \"https://ulozto.cz/file/TKvQVDFBEhtL/debian-9-6-0-amd64-netinst-iso\"\n```\n\n![Uk\u00e1zka stahov\u00e1n\u00ed](https://raw.githubusercontent.com/setnicka/ulozto-downloader/master/example-screenshot.png)\n\nP\u0159i vyu\u017eit\u00ed automatick\u00e9ho lousk\u00e1n\u00ed doporu\u010duji vyu\u017e\u00edt velk\u00fd po\u010det \u010d\u00e1st\u00ed, klidn\u011b\n50 (spust\u00edte `ulozto-downloader` a nech\u00e1te ho pracovat, on si postupn\u011b louskne\ndal\u0161\u00ed stahovac\u00ed linky a postupn\u011b navy\u0161uje po\u010det najednou stahovan\u00fdch \u010d\u00e1st\u00ed).\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Uloz.to quick multiple sessions downloader. This is fork of original https://github.com/setnicka/ulozto-downloader for pre-release pull-requests",
"version": "3.1.8",
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "26c1b710456e2ced7391aebcdf431178844386df39befb0d0701d92fbb9263c1",
"md5": "33477e61ad8e76385575eb32503b50b0",
"sha256": "221b4d1ea876d404855ad11af31502d0b05023e747dbcba563090199227fe1e0"
},
"downloads": -1,
"filename": "uld-3.1.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "33477e61ad8e76385575eb32503b50b0",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 13172500,
"upload_time": "2023-01-28T18:40:28",
"upload_time_iso_8601": "2023-01-28T18:40:28.050754Z",
"url": "https://files.pythonhosted.org/packages/26/c1/b710456e2ced7391aebcdf431178844386df39befb0d0701d92fbb9263c1/uld-3.1.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-01-28 18:40:28",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "setnicka",
"github_project": "ulozto-downloader",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "requests",
"specs": []
},
{
"name": "Pillow",
"specs": []
},
{
"name": "ansicolors",
"specs": []
},
{
"name": "numpy",
"specs": []
},
{
"name": "pysocks",
"specs": []
},
{
"name": "stem",
"specs": []
},
{
"name": "tflite-runtime",
"specs": []
}
],
"lcname": "uld"
}