-
Notifications
You must be signed in to change notification settings - Fork 48
Conversation
…lay correct DownloadType, remove old code, fix shutdown TOR not need for quickDownload
… and only parse/validate json response
ten výčet fixů a fíčur je parádní.. Bohužel to vypadá, že @setnicka opustil tento projekt taky, protože komunikace vázne a PR nejsou zpracovávány. :-( @vladodriver, každopádně vyzkouším tvůj fork |
Vyzkoušel jsem fork a změny mi přijdou z uživatelského hlediska velmi dobré (do kódu jsem zatím moc nekoukal, takže ten nehodnotím). Jsem pro sloučení 👍. |
Už jsem si zase konečně našel nějaký čas na tenhle projekt. Sypu si popel na hlavu za dlouhé nereagování (neměl jsem na to nějak kapacitu) a pokusím se tuhle velkou várku změn prohlédnout. Z prvotního prohlédnutí se mi to dost líbí :) |
Hlavně to vyzkoušet. Vyvinuto denním používáním. Začalo to bugem 44 Mělo to svý mouchy. I já nějaký přidával a zase spravoval. Pak jsem se podíval na Vzum a pustil ho ve wine .. bylo to rychlejší .. o dost.. použití stemu nebylo těžké a výsledek byl překvapivý (u mne až 3x rchleji), pak nějaký kód co tam sem tam přebýval z jiných verzí.. Detekce SlowCaptcha SlowDirect a Fast fungovala tak nějak divně (po stránce kódu). Postupně jsem to rozlouskl (pronikl do uspořádání kódu) a trochu porozdělil. Přidal jsem statistiku (v podstatě testování za běhu..) A pak přišla ta správná zábava - stahovat segmenty rovnou do řídkého souboru (ala bittorent, axel aria2..) Tohle jsem implementoval v životě poprvé. Má to velkou fragmentaci. Je to naivní implementace bez zamykání ale funguje proto, že status soubor .udown je binární a stav i data se zapisují jen do své vlastní byte-ové části, takže nedochází k přepsání jednoho procesu druhým při zápisu. Status soubor se pak v jiném procesu jen čte a sčítají se čísla uložených dat, z čehož vzniklo monitorování velikosti stažení a okamžité rychlosti. A ty linky jsou cenné.. (jdou získat jen 2 za půl hodiny / soubor a1 IP poctivě testováno). Ta půlhodina se resetuje při jakémkoliv dalším pokusu. Jedna IP+soubor tak může být blokobaná klidně celý den. Tor má tisíce exit nodů, ale to nemusí být moc, když se během jedný půlhodiny rozhodne takto stahovat soubor třeba 100 lidí... Při navázání stahování a nová těžba drahocenných linků zbytečně... Platnost linků je 2 dny. Když se začne stahovat i poslední 3 vteřiny před vypršením, tak to stahování dojede, když se spojení nezavře. A když ano link se invaliduje a místo něj se pak získá nový jen když je potřeba. Takže ta cache linků se můze hodit nejen pro dostažení, ale i po smazání staženého souboru. Je to maličký soubor. Po skončení stahování se záměrně nemaže. A když je tam plný počet platných linků Tor a spol. se už nespouští a jede se ihned plnou rychlostí což je pak u vekých souborů (10ky GB) ještě 3x rychlejší než znovu louskání nedostažených linků. Ano, přejmenoval jsem to. Chtěl jsem to mít taky na pipy.org pro snadnou instalaci. Spouštěcí skript je tedy uld.py. To lze samozřejmě klidně vrátit zpět. Vypadlo to spíš že to zde pokračovat nebude. Mě se ale ten krátký název pro spouštění moc líbí, je to napsané hned :) Změna velikosti bufferu ukládání a stahování (const.OUTFILE_WRITE_BUF a const.DOWN_CHUNK_SIZE) byla změněna na 20kb místo 1kb. A zlepšilo to zátěž při 100 segmentovém stahování. Tflite model jsem zabalil přímo do whl balíčku. Vadilo mi jak se mi furt všude stahuje do CWD. Ano je to ted dost velký balíček, přišlo mi to praktické. Lze samozřejmě vrátit spět stahovací kód. Šlo mi taky o trochu konzistence. Stahování se vyhodnotí a když je Fast, TOR se nespouští při zachování zvoleného počtu segmentů. Fast linky na jeden segment jsou prostě pomalé a dobře posloužily při vývoji SegFileWriter SegFileLoader a SegFileMonitor. Tor se klidně spustí i uprostřed stahování (jen když je potřeba), ve statusu se oběví průběh spouštění TORu a poté co se vzalo 50 linků z cache a už jedou, se louskají další. Ty co se dostahují putují zpět do fromty jako dříve. Změn je hodně a doufám, že se v tom půjde vyznat... Nejsem žádný velký pythonista. Je to pro mne jen jazyk == prostředek. Už jsem v něm nepsal mnoho let.. Myslím, že to snad alespoň funguje. Denně to používám. A tak jsem se nemohl nepodělit. Bylo by super spravit volání podprocesů na windows (aby se správně picklily ..) a fungovalo to.. Ale na ten OS nemám fakt nervy (18 let ho nepoužívám mimo virtuální stroje). Takže to teď nechávám být (to co mám na gitlabu považuji za dokončené a zde je to ručně zrcadlené). Když to bude k užitku budu rád. Mám teď rozdělaný kód v go a ten místo [7mi minut / 100 linků] jede [20 - 30 sekund / 100 linků] Ale dělá to pořád to samé. Jen rychleji a levněji. A možná přijde i GUI.. Ta neuronka je fakt super :), bez ní by to samozřejmě smysluplný nebylo. |
Prošel jsem si pořádně kód a commity a jsem pro to mergnout. Cestou jsem ale potkal pár věcí, které stály za to opravit nebo udělat trošku jinak. Nejrychlejší mi přišlo změny ammendnout do správných commitů, některé squashnout a podobně. Proto teď udělám merge přes dočasnou větev
Díky za spoustu práce, je to dost dobré :) |
Po vylepšení tohoto projektu, další vývoj opouštím a tak nabízím sloučení svých úprav mého forku: https://gitlab.com/vladodriver/uld pro užitek tohoto projektu
Opraveno:
Neopravemo:
Vylepšení a změny
--Statistika celkové velikosti uložených dat a rychlosti na 2. řádku dole