API Data “Ar Y Dydd Hwn…” Wicipedia Cymraeg

Casglu Data Gyda YQL

Yn ddiweddar, dwi wedi bod yn chware o gwmpas gydag adnodd datblygu YQL gan Yahoo (https://developer.yahoo.com/yql/). Mae’n galluogi ni ddefnyddio iaith debyg iawn i SQL i dynnu data allan o wefannau ayyb.

Mae’n werth trio allan y consol datblygu i gael gweld sut mae’n gweithio (https://developer.yahoo.com/yql/console/)

Ar ôl chware o gwmpas gyda’r consol – mi es ati i chwilio am brosiect diddorol ar ei gyfer.

Mi nes i gofio am y twît yma gan Robin Owain, rheolwr Wicipedia Cymru


Roedd Wicipedia Cymru wedi cyflwyno adran “Ar Y Dydd Hwn..” ar yr hafan. Yn sgil hyn, roedd salw un wedi gofyn a oedd modd defnyddio’r data yma ar wefannau eraill. Nes i fethu a chael hud i unrhyw API na ffrwd RSS cynhenid – felly es i ati i adeiladu API drwy ddefnyddio YQL i dynnu’r data allan.

Yr API

Cyn cychwyn, rhaid wynebu’r ffaith bod tynnu data o wefannau (neu site scraping) yn gallu bod reit ddadleuol, gyda rhai yn ei weld fel ffordd o ddwyn cynnwys. Y teimlad yw yn fras, os nad oes API wedi cael ei gynnig gan y wefan i allforio data, di nhw ddim eisiau neb wneud hynny, sydd yn bwynt digion teg. Yn yr achos hwn, gan nad dwi’n elwa o’r data mewn unrhyw ffordd, a gan fod y dolenni yn cysylltu yn ôl i’r dudalen Wicipedia cywir, dwi’n gobeithio bod defnyddio’r math yma o dechnoleg yn iawn. (O.N. os yw hyn yn pery pryder i Wicipedia Cymru – mi wnâi dynnu’r ffeiliau perthnasol i lawr)

I gael gweld enghraifft byw o sut mae’r API yn gweithio – cliciwch yma.

http://jsfiddle.net/dafyddelfryn/k9hLt4e2/

A dyma cyfeiriad yr API ei hun:

https://www.dafyddelfryn.cymru/gwaith/API_Wicipedia/dydd-hwn.php

Fel mae’r enghraifft yn ei ddangos – yr oll sydd angen ei wneud i ddangos y data ar wefan yw cynnwys y javascript (unai yn yr <HEAD>, neu mewn ffeil ar wahân), a chreu div o’r enw “heddiw” ar y dudalen ble mae’r data i fod i ymddangos.

I’w integreiddio i’ch gwefan, rhaid creu div newydd o’r enw “heddiw” i ddal y cynnwys – a chopïo’r cod javasript yma, unai i’r ffeil HTML, neu i ffeil js ar wahân:

Bydd angen cofio cynnwys fersiwn o JQuery hefyd ar gyfer yr ajax.

Mae’r cwbl ar gael ar GitHub yma (Linc)

Nodiadau

Am ryw reswm, er bod y data yn cael ei drosglwyddo drosodd yn iawn, mae’r ymateb yn dod yn ôl fel methiant – dyna pam mae’r ddau function yn prosesu’r data’r un peth.

Dwi hefyd wedi gorfod defnyddio PHP oherwydd, ambell dro, nid oedd y fersiwn javascript pur yn dychwelyd y data. Gan ddefnyddio’r ffeil PHP fel math o proxy, dwi wedi cael ymateb cywir pob tro.

Defnydd Pellach

Mi fysa’n ddiddorol gweld pa enghreifftiau arall o ddefnydd YQL sydd yn bosib e.e. tynnu data o wefannau ar gyfer diweddaru twitter ayyb. Os da chi’n creu rhywbeth, neu hefo syniadau, gadewch mi wybod.

Hwyl

 

Dafydd

2 Comments

  1. Carl Morris · Mawrth 26, 2015

    Mae cynnwys Wicipedia o dan Comin Creu BY-SA. Maen nhw yn annog ail-ddefnydd rhydd o’r cynnwys gyda phriodoliad. Byddai hi’n iawn i elwa yn ariannol hefyd.

    Er mwyn bod yn gwrtais fyddi di ddim eisiau bwrw eu lletya nhw gyda gormod o geisiadau. Heblaw am hynny dw i ddim yn gweld unrhyw broblem yn yr achos yma.

    • Dafydd Elfryn · Mawrth 26, 2015

      Hia Carl
      Diolch am yr eglurhad. Dda gen i glywed bod ail ddefnyddio’r data yn rhywbeth sydd yn cael ei annog.

      Cytuno hefo trio lleihau’r ceisiadau hefyd. Gyda’r gwelliannau sydd wedi dod yn sgil HTML5, mi fysa digon hawdd cadw cache lleol o’r data, gan sicrhau mai dim ond un galwad y dydd bydd pob defnyddiwr yn ei wneud.

      Hwyl

      Dafydd