methods

Uusi työkalu digi.kansalliskirjasto.fi:n aineistojen lataamiseen

Digitaaliset historialliset sanomalehtiaineistot saivat uuden työkalun helpottamaan isojen aineistomassojen tai tarkasti yksilöityjen aineistojen rajaamista. Kansalliskirjastossa kehitetty uusi helppokäyttöinen lataustyökalu hyödyntää digi.kansalliskirjasto.fi:ssä tehtäviä hakuja ladattavien aineistojen rajaukseen. Tässä tekstissä tutustutaan työkalun käyttöperiaatteisiin ja suunnitteluvaiheen ratkaisuihin teknisestä näkökulmasta.

Digitaalinen avoin muisti (DAM) -hankkeessa kehitetty digi.kansalliskirjasto.fi:n lataustyökalu mahdollistaa uuden tavan Kansalliskirjaston sanoma- ja aikakauslehtien, pienpainatteiden, kirjojen, käsikirjoitusten ja nuottien aineistojen lataamiseen. Työkalu on Digistä erillinen, käyttäjän omalla koneella käytettävä ohjelma, jonka käyttö ei vaadi koodausosaamista.

Aineiston lataaminen on mahdollista, kun sisältö katsotaan tekijänoikeudesta valtaosin vapaaksi. Työkalun kautta sanomalehdet ovat ladattavissa vuoden 1918 loppuun asti ja aikakauslehdet ja pienpainatteet vuoden 1910 loppuun asti. Muut aineistot ovat ladattavissa tekijänoikeuden metatiedon mukaan, jolloin aikaraja vaihtelee aineistoittain ja teoksittain. Työkalun avulla voi ladata aineiston ja jatkaa aineiston tarkastelua ja käsittelyä muilla työkaluilla niin laadullisiin kuin määrällisiin menetelmiin tukeutuen.

Aineistoja on saatavilla myös valmiiksi koostetuissa datapaketeissa tai rajapintojen kautta. Kansalliskirjaston digitoimien sanomalehtien ja aikakauslehtien datapaketteja on mahdollista ladata Digin avoin data -sivulta. Tarkempaa tietoa Kansalliskirjaston tarjoamista datapaketeista ja rajapinnoista on saatavilla Datakatalogi-sivulta.

Datapaketteihin verrattuna lataustyökalu mahdollistaa aineistojen tarkemman rajaamisen. Se palvelee esimerkiksi historian- ja kielentutkijoita, joille historialliset sanomalehtiaineistot ovat tärkeä aineistolähde. Toisaalta työkalun käyttö on teknisesti yksinkertaisempaa kuin Digin rajapintojen käyttö. Sen vuoksi se sopii hyvin myös sukututkimukseen tai kansalaiskäyttöön tutkimuskäytön ohella. Työkalua on kehitetty käyttäjäpalautteen perusteella, ja käyttäjäpalaute on edelleen tervetullutta työkalun jatkokehittämiseksi. Palautetta voi antaa Digin palautekanavan tai chatin kautta.

Lataustyökalun käyttö

Käyttöliittymän kautta suoritettavat toiminnot ja työkalun suorituksen eteneminen toimintojen seurauksena

Työkalun käyttö aloitetaan tekemällä aineiston haku osoitteessa digi.kansalliskirjasto.fi. Saadut Digin hakutulokset sisältävän sivun osoite syötetään lataustyökalun osoiteriville, ja työkalussa valitaan halutut teksti- ja kuva-aineistojen tiedostoformaatit. Lisäksi on mahdollista ladata kaikki hakutulosten niteiden sivujen aineistot valitsemalla ”Lataa kaikki niteen sivut”. Myös tallennussijaintiin ja sen hakemistopuun rakenteeseen on mahdollista vaikuttaa. Lataus käynnistyy ”Lataa aineisto”-painikkeen kautta.

Latauksen käynnistyessä työkalu poimii hakutulokset sisältävän sivun osoitteesta kaikki haussa käytetyt parametrit ja muodostaa niiden avulla kutsun työkalun käyttöön tarkoitettuun rajapintaan. Tämän jälkeen rajapintaan tehtävien kutsujen avulla ladataan työkaluun kaikki tiedot, jotka on määritelty työkalun valinnoissa.

Seuraavaksi työkalu käy ladattuja aineistoihin liittyviä tietoja läpi ja tarkastaa ja tarvittaessa muuntaa, esimerkiksi päivämäärät ja niteiden nimet, työkalun toiminnan kannalta sopivaan muotoon. Tässä vaiheessa tietojen pohjalta laaditaan myös CSV-tiedosto, joka sisältää esimerkiksi niteiden nimet, päivämäärät ja tekstiviitteet. Tiedosto tallennetaan automaattisesti samaan hakemistoon, joka on asetettu aineiston tallennussijainniksi työkalun käyttöliittymässä.

Työkalu luo diagrammin, joka visualisoi ladattavien aineistojen sivujen määrää ja hakusanojen esiintyvyyttä sivuilla, jos hakusanoja on käytetty haussa. Diagrammin toteutuksessa on käytetty Matplotlib-kirjastoa, jolla on mahdollista toteuttaa tiedon visualisointia graafista käyttöliittymää hyödyntävissä Python-ohjelmissa. Kirjaston avulla voi luoda esimerkiksi erilaisia viiva- tai pylväsdiagrammeja asetuksia vaihtamalla. Diagrammin laadinnassa kiinnitettiinkin huomioita sen kokoon erityisesti tilanteissa, joissa ladattavia aineistoja on paljon eri vuosilta. 

Latauksen edetessä käyttäjälle esitetään päivittyvää tietoa latauksen edistymisestä, aika-arviota sen kestosta ja lataukseen käytetyn ja vapaan levytilan määrästä.

Latauksen aikana lataus on mahdollista keskeyttää ”Keskeytä lataus”-painikkeen avulla. Tällöin työkalu suorittaa viimeisen hakutuloksen latauksen loppuun ja pysäyttää sen jälkeen latauksen. Lisäksi työkalu tallettaa tiedoston, joka sisältää käynnissä olleeseen lataukseen liittyviä tietoja, esimerkiksi hakutulokset sisältävän sivun osoitteen, käyttöliittymästä valitut teksti- ja kuva-aineistojen tiedostoformaatit, työkalun käyttöön tehdyn rajapinnan kautta ladatut tiedot ja tiedon siitä, mikä on seuraavaksi ladattava hakutulos. Keskeytettyä latausta on mahdollista jatkaa esimerkiksi seuraavana päivänä, vaikka työkalu on välillä suljettu. ”Peruuta lataus”- painike poistaa latauksen jatkamiseen luodun tiedoston ja palauttaa työkalun tilaan, josta voidaan aloittaa uusi lataus.

Katso lyhyt video työkalun käytöstä:

Mitä lataustyökalun kehittäminen vaatii?

Työkalun kehittäminen on ollut noin vuoden kestänyt prosessi. Työkalusta pyrittiin toteuttamaan mahdollisimman helppokäyttöinen ja teknisiltä valmiuksiltaan erilaisille käyttäjille soveltuva. Tämän vuoksi työkaluun kehitettiin graafinen käyttöliittymä ja työkalu paketoitiin pyinstaller-työkalun avulla ajettavaksi exe-tiedostoksi. Työkalua varten kehitetty uusi rajapinta selkeytti työkalun toteutusta.

Käyttöliittymä

Lataustyökalun käyttöliittymä

Lataustyökalun käyttöliittymä on toteutettu hyödyntäen Pythonin Tkinter-kirjastoa. Tkinter on vakiona Pythonin mukana tuleva käyttöliittymäkirjasto, ja se sisältyy myös Pythonin eri käyttöjärjestelmille julkaistuihin versioihin. Kirjaston avulla on mahdollista luoda käyttöliittymiä erilaisten käyttöliittymäkomponenttien avulla. Komponenttien avulla käyttöliittymään voidaan lisätä erilaisia tekstikenttiä, painikkeita, ikkunoita, vierityspalkkeja ja esimerkiksi kuvia. 

Tkinterin lisäksi Pythonille on saatavilla useita muita kirjastoja, joiden avulla graafisen käyttöliittymän toteuttaminen on mahdollista. Ongelmatilanteissa Tkinterin kattavasta dokumentaatiosta ja muiden käyttäjien kokemuksista on ollut työkalun kehityksen aikana apua. Kirjaston käyttö oli työkalua toteutettaessa sujuvaa, vaikka aikaisempaa kokemusta sen hyödyntämisestä ei ollut. Käyttöliittymäkomponenttien asettelu vaati aluksi hieman enemmän perehtymistä ja opettelua, mutta ongelmatilanteissa verkkolähteet tarjosivat nopean ratkaisun. 

Työkalua varten toteutettu rajapinta

Työkalua varten toteutettiin digi.kansalliskirjasto.fi-palveluun uusi rajapinta, jonka kautta on mahdollista ladata hakutuloksiin liittyviä tietoja. Tietoja hyödyntäen hakutuloksiin liittyvien aineistojen lataaminen on mahdollista. Rajapinta palauttaa tiedot JSON-formaatissa. Tiedot sisältävät jokaisen hakutulossivun kohdalla niteeseen liittyvän urlin, niteen nimen, ilmestymispäivän ja muita niteeseen liittyviä tietoja. Lisäksi tiedot sisältävät url-pohjat, joiden avulla voidaan muodostaa urlit, joiden kautta hakutulossivujen eri formaateissa olevat tiedostot voidaan ladata. Hakutulokseen liittyvän pdf-tiedoston url on myös ilmoitettu jokaisen hakutuloksen kohdalla. 

Ennen työkalulle toteutettua omaa rajapintaa aineistojen vuosirajat täytyi tarkistaa työkalun puolella, mikä hidasti merkittävästi latauksen aloitusta ja työkalun toimintaa. Uuden rajapinnan ansiosta vuosirajojen tarkastus tapahtuu Digin puolella. Rajapinnan kautta ladattaville aineistoille on asetettu tekijänoikeudellisista syistä tarkat aineisto- ja vuosirajat, joiden mukaisesti aineistojen lataus suoritetaan. Erillinen rajapinta mahdollistaa tarvittaessa myös aineistojen tarkemman käytön seurannan ja rajoittamisen. Lisäksi rajapinta on tarkoitettu ensisijaisesti lataustyökalun käyttöön, joten rajapintaan tehtävissä muutoksissa lataustyökalu säilyy toimivana. 

Työkalun paketointi ajettavaan muotoon

Työkalun Python-toteutus paketointiin pyinstaller-työkalun avulla ajettavaksi exe-tiedostoksi, jonka suorittamiseen ei vaadita Python asennusta tai ohjelmakirjastoja. Kaikki työkalun suorittamisen kannalta tarpeelliset tiedostot tulevat työkalun mukana. 

Pyinstaller-työkalun käyttöön liittyi kehityksen aikana muutamia haasteita. Työkalun avulla on mahdollista paketoida kaikki paketoitavaan Python-toteutukseen liittyvät tiedostot yhteen exe-tiedostoon. Osa tiedostoista jätettiin kuitenkin lopullisen exe-tiedoston ulkopuolelle, jottei tutkijapalautteessa ongelmia aiheuttaneet virustorjuntaohjelmat ota sitä tarkasteluunsa. Lisäksi vaarana olisi ollut, että ajattava tiedosto olisi ollut kooltaan suuri ja sen käynnistyminen vienyt paljon aikaa. Pyinstallerin käytössä kohdatut ongelmat ratkesivat keskustelufoorumien käyttäjien kokemusten avulla. Tunnetun työkalun käytön etuna onkin, että käyttäjäkunnan kokemusten avulla myös ongelmalliset tilanteet ratkeavat nopeasti.

Lopuksi

Lataustyökalu on ladattavissa https://digi.kansalliskirjasto.fi/opendata/submit sivulta. Lataustyökalusta julkaistaan pian myös englannin- ja ruotsinkieliset versiot. Lataustyökalun käyttäjiltä toivotaan edelleen kehitysideoita ja käyttökokemuksia työkalun kehittämiseksi. Lataustyökalu on toteutettu osana Digitaalinen avoin muisti (DAM) -hanketta, jota rahoittaa Euroopan Aluekehitysrahasto Vipuvoimaa EU:lta 2014–2020.

Onko sinulla kysymyksiä, tai haluatko kuulla lisää työkalusta? Osallistu työkalun käyttöä esittelevään tapahtumaan 23.9.2021 klo 16-17. Ilmoittaudu viimeistään 21.9. https://www.lyyti.fi/reg/Digin_lataustyokalu_tutuksi 

Kirjoittajat

Tietojärjestelmäasiantuntija
Erno Liukkonen

Suunnittelija
Liisa Näpärä


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: