Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: pkill - 06.02.26 - klo:18.38
-
Tuli tuossa pähkäiltyä helppoa tapaa ladata digilehtiä, eikä valmista sovellustakaan moiseen tuntunut löytyvän, niin hoksasin, että homman voi automatisoida xdotoolilla, joka tekee näppäinpainalluksia ohjelmallisesti.
Tuo skripti toimii kaikille digilehdille, joiden sivun voi tulostaa ctrl+p näppäimellä. Esim. https://nakoislehti.media.fi/itasavo/7bfa9397-eda9-4923-a540-29ad08535271/1?lang=fi
Xdotool ei toimi Waylandissa, joten tuo on kätevä vaikka gnome boxesin virtuaalikoneeseen asentaa Lubuntu tai joku muu X ikkunointia käyttävä kevyt Linux, niin se voi suorittaa talteenottoa taustalla. Kannattaa tehdä virtuaalikoneesta riittävän suuri, sillä pdf sivut vie kymmeniä megatavuja kappale ja tila loppuu nopeasti kesken jos on paljon sivuja ladattavana.
Firefox tuntui olevan toimivin selain ensimmäisen sivun tabulaattorin suhteen. tabulaattorin toiminnon voi myös korvata kahdella ctrl+p näppäimellä, mutta huomasin tuon tuottavan jollain sivuilla pidempiä tiedostonimiä. Skriptin alussa voi määritellä viiveitä ja toistomääriä. Esikatselun viiveitä lyhentämällä säästää paljon aikaa, mutta jos se ei kerkeä latautumaan, niin tuloksena on tyhjä sivu, joten liian tarkalle ei kannata virittää.
Ohje:
Asenna xdotool
sudo apt install xdotool
Tallenna skripti vaikka lehtilatain.sh ja anna sille suoritusoikeudet. Käynnistä terminaalissa ./lehtilatain.sh avaa sitten heti esille Firefox selaimessa auki oleva digilehti ja se alkaa näpyttelemään sivuja talteen.
#!/usr/bin/env bash
#
# Skripti, joka automatisoi toistuvaa Ctrl+P \u2192 navigointi \u2192 valinta -toimintoa
set -u # est�� m��rittelem�tt�mien muuttujien k�yt�n
# ==================
# Asetukset / viiveet
# ==================
ALOITUSVIIVE=5 # sekuntia ennen ohjelman aloittamista
TABULAATTORIPAINALLUKSET_SIVU_1=6 # alkukierroksella / ensimm�isell� kerralla (Firefox=6, Chromiumissa joskus 5)
TABULAATTORIPAINALLUKSET_LOPPUSIVUT=2 # p��silmukan jokaisella kierroksella
TABULAATTORIVIIVE=0.25 # pieni viive tabulaattori painallusten v�liss�
ESIKATSELUVIIVE=10 # kauanko odotetaan Ctrl+P j�lkeen (valikko aukeaa)
TULOSTUSIKKUNAVIIVE=10 # odotusviive tulostusikkunan avauduttua
VIIVE_ENNEN_ESC_NAPPAINTA=3 # viive ennen esc-n�pp�imi� SIVUN tallennuksen j�lkeen
KIERROSTEN_VALINEN_VIIVE=2 # ylim��r�inen viive kierrosten v�liin, ett� uusi sivu kerke�� latautumaan
KIERROKSET=40 # montako kertaa toistetaan
# ==================
# Ensimm�inen sivu / ensimm�inen tulostus vaatii enemm�n tabulaattoripainalluksia.
# ==================
echo "Alustava suoritus (kierros 0/aloitus)..."
sleep "$ALOITUSVIIVE"
xdotool key ctrl+p
sleep "$ESIKATSELUVIIVE"
# Navigoidaan tulosta nappulaan (m��r� voi vaihdella selaimesta riippuen)
echo " \u2192 Painetaan Tab ${TABULAATTORIPAINALLUKSET_SIVU_1} kertaa..."
for ((i=1; i<=TABULAATTORIPAINALLUKSET_SIVU_1; i++)); do
xdotool key Tab
sleep "$TABULAATTORIVIIVE"
done
xdotool key Return
sleep "$TULOSTUSIKKUNAVIIVE"
xdotool key Return
sleep 3
xdotool key Return
sleep 4
# Suljetaan mahdolliset avoimet valikot/ikkunat
for ((i=1; i<=4; i++)); do
xdotool key 0xff1b
sleep 0.2
done
# Seuraava sivu. Nuoli oikealle
xdotool key Right
sleep 2
# ==================
# P��silmukka
# ==================
echo "Aloitetaan $KIERROKSET kierrosta..."
for ((round=1; round<=KIERROKSET; round++)); do
printf "Kierros %2d / %d\n" "$round" "$KIERROKSET"
# Ctrl+P \u2192 avaa esikatseluvalikko
xdotool key ctrl+p
sleep "$ESIKATSELUVIIVE"
echo " \u2192 Painetaan Tab ${TABULAATTORIPAINALLUKSET_LOPPUSIVUT} kertaa..."
for ((i=1; i<=TABULAATTORIPAINALLUKSET_LOPPUSIVUT; i++)); do
xdotool key Tab
sleep "$TABULAATTORIVIIVE"
done
# Valitaan eka ehdotus
xdotool key Return
sleep "$TULOSTUSIKKUNAVIIVE"
# Seuraavat enterit
xdotool key Return
sleep 3
xdotool key Return
sleep 4
# Esc nelj� kertaa. Sulkee esikatseluikkunan ja mahdolliset h�iri�t, est�� my�s viimeisen sivun tallentamisen yh� uudestaan.
for ((i=1; i<=4; i++)); do
xdotool key 0xff1b
sleep 0.2
done
# Seuraava sivu. Nuoli oikealle
xdotool key Right
sleep 0.3
# Varmuuden vuoksi pieni heng�hdystauko kierrosten v�liin
sleep "$KIERROSTEN_VALINEN_VIIVE"
done
echo "Valmis! Tehtiin $KIERROKSET kierrosta."
Waylandille on olemassa ydotool, jolla vastaavien toimintojen pitäisi onnistua, mutta en sitä itse saanut toimimaan.