jednoduchý skript na sťahovanie z FS

igrijan
Aktívny člen
Aktívny člen
Príspevky: 106
Dátum registrácie: 28 Dec 2013, 23:31
Predkovia z oblasti: Kamenec p. Vtáčnikom, Dolné Naštice, Vysočany, Valaská Dubová

Dobrý deň,

ak by mal niekto záujem, vytvoril som v Pythone jednoduchý makro skript na sťahovanie veľkých matrík z FS. FS blokuje botov, takže nie je možné proces zautomatizovať na pozadí tak, ako to išlo kedysi. Tento skript preto funguje ako automatické "mačkátko" tlačidiel "download", "save" a "next page" na otvorenej a prihlásenej FS stránke, takže verím, že by mal teoreticky fungovať ešte dlhú dobu.

Čo k tomu treba?

Tento návod sa pokúsim napísať tak, aby ho zvládol aj technicky neznalý človek. Prvým krokom je, že si stiahneme Python. Na tejto stránke si stiahnite jeho poslednú iteráciu: https://www.python.org/downloads/

Pre používateľov OS Windows stačí kliknúť na "Download Python install manager", stiahnúť a po dokončení sťahovania spustiť inštaláciu. V priebehu inštalácie Vám vyhodí možnosť "Add Python to PATH", tú treba zaškrtnúť a potvrdiť, inak Python nebude fungovať.

Po nainstalovaní otvoríme príkazový riadok a to tak, že do vyhľadávania napíšeme "CMD" a nájdený program spustíme. Otvorí sa nám čierna tabuľka, kde vložíme tento text:

Kód: Vybrať všetko

pip install --upgrade pip
a stlačíme ENTER. Následne prebehne inštalácia/aktualizícia pip-u.

Keď sa proces dokončí, vložíme do príkazového riadka tento text:

Kód: Vybrať všetko

pip install pyautogui keyboard
Keď sa proces dokončí, tak máme nainštalované všetko potrebné. Príkazový riadok však ešte nezatvárame.

Samotný skript sa nachádza na mojom google disku, na linku:
https://drive.google.com/drive/folders/ ... sp=sharing

Tvoria ho 2 súbory:
- sc.py
- mp.py

Oba súbory si stiahnite a uložte na túto cestu:

Kód: Vybrať všetko

C:\Users\*názov Vášho konta*\*sem vložiť oba skripty*
Spúšťať sa následne budú cez príkazový riadok (CMD).

Pre ich editáciu je najjoduchšie si vo Windowse zapnúť zobrazovanie prípon známych súborov. Vo Win 10 na to stačí otvoriť akýkoľvek priečinok, v ľavo hore v možnostiach priečinka kliknúť na kartu "View/Zobraziť" a zaškrtnúť okienko "File name extentions/Zobraziť prípony známych súborov". Po tom budete za každým súborom vidieť aj jeho príponu (napríklad .DOCX pri Wordovských dokumentoch a podobne...).

Ďalej si otvoríme náš preferovaný internetový prehliadač, prihlásime sa na FS, vyberieme farnosť a otvoríme požadovaný film matriky. Je podstatné, aby sme mali otvorenú konkrétnu stranu, od ktorej chceme spustiť sťahovanie. Taktiež je dobré, aby na stránke nič "nezavadzalo", preto môžeme zavrieť bočný informačný panel.

Pre skúšku, či je všetko tak, ako má byť, stiahneme prvú stranu manuálne. Po stlačení tlačítka "download" má vyskočiť dialógové okno s možnosťou "uložiť ako". Ak máte zapnuté automatické sťahovanie, treba ho zmeniť v nastaveniach prehliadača. V prípade Google Chrome nájdeme túto voľbu po kliknutí na 3 bodky v pravom hornom rohu, ďalej klikneme na ponuku "settings/nastavenia" a následne na kartu "downloads/stiahnuté", kde uvidíme možnosť "pred každým sťahovaním sa spýtať, kam uložiť súbor" a túto možnosť zaškrtneme.

Opäť sa vrátime na prihlásenú stránku na FS s otvorenou stranou konkrétnej matriky. Dôležité: Prvú stranu musíme uložiť manuálne, aby prehliadač vedel, ktorý priečinok má dialógové okno "uložiť ako" otvárať.

Teraz spustíme prvé makro, ktoré nám povie súradnice tlačítok. Otvoríme príkazový riadok (CMD) a do riadku vložíme text:

Kód: Vybrať všetko

python mp.py
a stlačíme ENTER. Skript by sa mal spustiť v príkazovom riadku a každú sekundu nám ukázať súradnice polohy myši na obrazovke. Prejdeme preto myšou nad stred tlačítka "download" na FS (šipka dole) a obe súradnice si zapíšeme (napríklad 1350, 250). Tlačítko "download" teraz rozklikneme a otvorí sa nám dialógové okno "uložiť ako". Myšou prejdeme nad stred tlačítka "save/uložiť" a taktiež si zapíšeme jeho súradnice. Toto okno môžeme teraz zavrieť a myšou prejdeme nad tlačítko "next image/ďalšia strana" na pravej, prípadne ľavej strane stránky (podľa toho či chceme snímky sťahovať vzostupne alebo zostupne) a aj súradnice tretieho tlačítka si zapíšeme.

Teraz upravíme skript na samotné sťahovanie. Súbor "sc.PY" premenujeme na "sc.TXT". Vyskočí nám upozornenie či chceme naozaj premenovať príponu súboru čo potvrdíme a súbor otvoríme. Hneď na začiatku kódu vidíme nasledovné:

Kód: Vybrať všetko

NUMBER_OF_IMAGES = 693
START_IMAGE = 518

WAIT_FOR_DOWNLOAD_MENU = 5
WAIT_AFTER_DOWNLOAD = 3
WAIT_AFTER_NEXT = 5
Podstatné sú prvé dva riadky. Za "NUMBER_OF_IMAGES" prepíšeme číslo na číslo poslednej strany, teda číslo poslednej snímky, ktorú chceme uložiť a za START_IMAGE prepíšeme číslo za číslo prvej snímky, ktorou chceme sťahovanie začať. Keďže prvú stranu sme však stiahli manuálne, na FS prehodíme snímku na ďalšiu a do skriptu zapíšeme až číslo tejto strany.

Ďalšie 3 riadky sú čas medzi stlačeniami tlačítok. Keďže stránka FS sa načítava často extrémne pomaly, nastavil som tieto časy na 5, 3 a 5 sekúnd. V prípade, že sa Vám zdá tento čas príliš dlhý, môžete si čísla upraviť za vlastné. Po každej editácií treba súbor uložiť. Pokiaľ sme teda upravili všetko, čo sme chceli, súbor zavrieme a prepíšeme opäť jeho príponu z .TXT na .PY.

Pre spustenie skriptu otvoríme príkazový riadok kde vložíme text:

Kód: Vybrať všetko

python sc.py
a stlačíme ENTER. Následne vyskočí text "Máš 10 sekúnd na otvorenie vieweru.". Za tento čas myšou klikneme na kartu v prehliadači, v ktorej je otvorená FS so snímkami matriky, myš presunieme do stredu obrazovky a pustíme. Skript začne po uplynutí 10 sekúnd sám hýbať myšou a stláčať tlačítka. Dôležité je, že počas tohto procesu nesmieme s počítačom čokoľvek robiť. Ak by sme potrebovali skript núdzovo zastaviť, prejdeme z myšou do ľavého horného rohu obrazovky čo proces zastaví.

Ak by ste mali nejaké otázky či technické problémy, kľudne mi napíšte priamo súkromnú správu. Verím, že by to niekomu mohlo pomôcť.

S pozdravom
MK
Používateľov profilový obrázok
Absik
Veterán
Veterán
Príspevky: 310
Dátum registrácie: 17 Okt 2012, 23:22
Predkovia z oblasti: Východné Slovensko: Škripko, Pravda, Polyák, Andrejčák, Výrostko/Virosztko, Prepiják; Maďarsko/Košice: Deutsch; Spiš+Poľsko: Kohn, Tandlich; Morava: Absolon, Lédl
Kontaktovať používateľa:

Vdaka, funguje to parádne. Musel som upraviť suradnice, inak pohoda.
Napísať odpoveď