Gaois

Uirlisí le haghaidh API Logainm

Blog post is available in Irish only

Ó sheolamar API Logainm i mí Dheireadh Fómhair 2020 (seoladh leagan béite roimhe sin i mí an Mheithimh 2019), cuirtear ceist orm go minic conas na sonraí a fhaightear ón API a láimhseáil. Más ea, tá bosca uirlisí (i.e. stór) cruthaithe agam ar GitHub.com ina gcuirfidh mé uirlisí (i.e. scripteanna Python) samplacha chun sonraí ón API a phróiseáil ar bhealaí éagsúla, agus tá an chéad uirlis curtha isteach sa bhosca agam. Déanfaidh mé cur síos ar an script úd sa bhlagmhír seo. Tá an stór anseo.

Is minic a iarrtar orm sonraí as Logainm a chur ar fáil i bhfoirm scarbhileoige, i.e. ar thábla déthoiseach. Cé nach formáid idéalach í seo do shonraí casta, is féidir é a dhéanamh. Anuas air sin, is féidir na sonraí a fhaightear trí API Logainm a pharsáil agus codanna díobh a phriontáil amach i bhfoirm tábla. Sin é a dhéanann an script seo, agus míneoidh mé anois conas a dhéantar sin.

Tá an script seo spleách ar roinnt pacáistí Python. json chun sonraí json a láimhseáil, os.path chun conairí a láimhseáil, agus requests chun iarratais HTTP a sheoladh.

import json  
import os  
import requests

Ansin cruthaítear Aicme dar teideal Place chun meiteashonraí áite a stóráil de réir mar a léann an ríomhchlár trí liosta torthaí, i.e. áiteanna. Úsáidtear oibíocht den aicme seo chun an t-eolas a dhíorthaítear as an JSON le haghaidh gach áit a stóráil sula scríobhtar amach mar shraith i dtábla é.

class Place:  
  def __init__(self, logainm_id, lat, lon, county, barony, parish, cats, names_en, names_ga):  
    self.logainm_id = logainm_id  
    self.lat = lat  
    self.lon = lon  
    self.county = county  
    self.barony = barony  
    self.parish = parish  
    self.cats = cats  
    self.names_en = names_en  
    self.names_ga = names_ga  

Ina dhiaidh sin, tá feidhm dar teideal parse_place() ann chun áit a pharsáil. Is anseo a dhéantar an obair ar fad. Glacann an fheidhm le Foclóir (i.e. Python Dictionary) mar argóint ina bhfuil sonraí a bhaineann le háit amháin. Ansin faigheann sé comhordanáidí (lat, lon), tuismitheoirí (contae, barúntacht, paróiste dlí), catagóirí (ceann amháin de ghnáth, e.g. 'townland') agus ainmneacha na háite as an bhFoclóir sonraí sin. Mar shampla, chun ainmneacha na háite a fháil, faightear Liosta ainmneacha Béarla agus Liosta ainmneacha Gaeilge.

    placenames = place_data['placenames'] # list of dicts
    names_en = []
    names_ga = []
    for placename in placenames:
        if placename['language'] == 'en':
            names_en.append(placename['wording'])
        if placename['language'] == 'ga':
            names_ga.append(placename['wording'])

Déantar na sonraí ar fad a thabhairt ar ais mar theaghráin (Python Strings). Déantar na catagóirí agus na hainmneacha a thabhairt ar ais mar theaghrán camógdheighilte. Bíonn teaghrán ar leith ag na hainmneacha Béarla agus na hainmneacha Gaeilge.

    p = Place(str(logainm_id), str(lat), str(lon), county, barony, parish, ', '.join(cats), ', '.join(names_en), ', '.join(names_ga))
    return p

Ina dhiaidh sin, glacann an script le roinnt argóintí ón úsáideoir, is é sin eochair API, uimhir aitheantais contae (bíonn iarratais API teoranta do chontae amháin) agus cód aitheantais catagóire áite. Caithfear na hargóintí seo a chruachódáil isteach sa script sula ritheann tú é. Caithfear clárú anseo chun eochair API a fháil. Is féidir liosta uimhreacha aitheantais na gcontaetha a fháil anseo agus is féidir liosta chóid aitheantais na gcatagóirí áiteanna a fháil anseo (is gá 'API_KEY_HERE' a ionadú le d'eochair API féin chun go n-obreoidh na naisc seo).

api_key = '' # Get key here: https://www.gaois.ie/en/technology/developers/registration/
place_id = '100004' # EDIT (i.e. 100000 to 100031)
category_id = 'BF' # EDIT (e.g. CON, BAR, PAR, BF, TR, B)

Glaonn an script ar an API ansin chun sonraí a fháil de réir na bparaiméadar thuas. Déanann sé na sonraí a chur i dtaisce (i.e. a shábháil i gcomhad téacs áitiúil) le nach gá an t-iarratas API a dhéanamh ach uair amháin. Más gá na sonraí a nuashonrú, níl le déanamh ach an comhad taisce a scrios.

if not os.path.isfile('logainm_'+place_id+'_'+category_id+'.json'):
    json_payload = requests.get('https://www.logainm.ie/api/v1.0/?PlaceID='+place_id+'&CategoryID='+category_id+'&apiKey='+api_key).text # See: docs.gaois.ie
    with open('logainm_'+place_id+'_'+category_id+'.json', 'w', encoding='utf-8') as f:
        f.write(json_payload)

Léitear an pálasta JSON ansin, tiontaítear é ó fhormáid JSON (JavaScript Object) go formáid Python (Dictionary), faightear an liosta torthaí (i.e. áiteanna) as na sonraí, osclaítear comhad aschuir (i.e. comhad téacs TSV), ritear an fheidhm parse_place() ar gach áit ceann ar cheann, agus scríobhtar an toradh (an t-aschur ó parse_place()) amach mar theaghrán tábdheighilte ar líne sa chomhad aschuir. Moltar an comhad aschuir a oscailt in Notepad++ agus an t-inneachar a chóipeáil agus a ghreamú go Excel nó Sheets le breathnú air.

for place in results:
    p = parse_place(place)
    fo.write(p.logainm_id + '\t' + p.lat + '\t' + p.lon + '\t' + p.county + '\t' + p.barony + '\t' + p.parish + '\t' + p.cats + '\t' + p.names_en + '\t' + p.names_ga + '\n')

Cuirfidh mé scripteanna eile leis an stór seo anois is arís. Cuir nóta chugam ag brian.oraghallaigh@dcu.ie má tá iarratas faoi leith agat.

Údar: Brian Ó Raghallaigh