Yigglib-Tutorial

Dieses Tutorial ist für Version 0.2 der YiGGlib (seit Version 0.1 hat sich das API stark verändert).

Vorbereitung

Man muss die yigglib natürlich importieren und dann braucht man eine Instanz der Klasse YiGG(). Der erste (und einzige) Parameter von YiGG ist dein API-KEY. (Solltest du nur RSS-Feeds wollen, kannst du einen leeren String oder 'blablabla' verwenden ;-).
  1. import yigglib
  2. my_yigg = yigglib.YiGG('dein_api_key')
Später kannst du deinen API-Key dann mit my_yigg.api_key = 'bla' ändern.

RSS-Feeds

RSS-Feeds werden generell mit my_yigg.rss... angesprochen.
Man kann my_yigg.rss() wie eine Funktion behandeln, es sollte als Parameter, dann ein Dictionary haben, dass per urllib.urlencode umgewandelt wird. Alternativ kann man auch my_yigg.rss.queue() oder my_yigg.rss.frontpage() aufrufen. Hier kann man ein Dictionary übergeben, wenn man es nicht tut, kriegt man die normale Queue/Frontpage. Was in das Dict reinkommen kann steht im wesentlichen auf RSS-Parameter bei YiGG.de. Für Kategorien einfach {'cat':cat_id} verwenden.
So, jetzt zum Beispiel...
  1. import yigglib
  2. my_yigg = yigglib.YiGG('dein_api_key')
  3. rss_feed = my_yigg.rss({'cat':35, 'showvotes':'yes', 'marvin':'no'})
  4. print rss_feed.storys[0].title
Im Moment wird showvotes von der yigglib noch ignoriert, die Votes aus dem RSS-Feed sind also nicht über rss_feed.storys[0].votecount verfügbar.
Eine Story hat die gleichen Attribute wie eine REST-Story, nur halt, dass sie nicht so komplett ist. Ihr könnt sie also auf die gleiche Weise ansprechen.

REST

REST ist mit Version 0.2 recht einfach geworden :-)
Um zum Beispiel die REST-Funktion yigg.users.get_profile zu verwenden macht ihr: my_yigg.rest.users.get_profile (ihr hängt also users.get_profile an my_yigg.rest dran). Fü yigg.spiders.technorati.get_latest_by_tag macht ihr: my_yigg.rest.spiders.technorati.get_latest_by_tag!
Als Argument nehmen alle Funktionen ein Dictionary, dass mit urllib.urlencode umgewandelt wird. Also zum Beispiel {'page':5} oder {'username':'hu8'}. Je nach Funktion halt...
Vermutlich wollt ihr hier auch ein Beispiel.
  1. import yigglib
  2. my_yigg = yigglib.YiGG('dein_api_key')
  3. story = my_yigg.rest.storys.get_story({'story_id':285136})
  4. print story.comments.comment[0].posted_by # Eventuell AttributeError wenn es keinen Kommentar gibt...
  5. print story.title
  6. print story.text
Hier holen wir uns eine Story, geben den Autor des ersten Kommentars aus, dann den Title und den Text der Story. Eventuell sollte man auf AttributeError aufpassen, wenn die Story keine Kommentare hat. (Oder vorher mit hasattr(story, 'comments') ans hasattr(story.comments, 'comment') prüfen!
Andere Funktionen funktionieren auf die gleiche Weise. Die Attribute von story ergeben sich aus den XML-Tags die YiGG zurückgibt. Man kann also die API-Doku von YiGG verwenden.

ffpa_vote.php

my_yigg.ffpa(my_dict). my_dict ist wiedermal ein Dictionary, in das exturl, api_key und vote reinpassen ;). exturl sollte eine URL sein, api_key dein API-KEY (der leer sein kann wenn du nicht votest) und vote sollte 'true' sein, wenn du für den Artikel votest.
Zurückgegeben wird immer eine Liste mit zwei Elementen: (yiggs, error). Yiggs ist eine Zahl, Error ist True oder False (wobei True nicht zwingend heisst, dass alles OK war...)

Fehler?

Nei, hier geht es nicht darum was du machen sollst, wenn die yigglib Fehler hast (in dem Fall mir eine Mail schreiben) sondern darum was passiert wenn ein Fehler auftritt.
Bis Vcersion 0.2.1 wurde eine Fehlermeldung geraised (RESTError meistens). Fehlermeldungen werden immernoch geraised. Wenn allerdings ein REST-Fehler passiert, dann wird eine RESTError returned (nicht geraised). Und RESTError ist eine Subclass vo nAnswer() (dem Objekt das sonst alle REST-Antworten sind...), mit dem zusätzlichen Attribut "_id" mit der ID des Fehlers (als String).

Noch Fragen?

Siehe den Punkt Kontakt unter der Homepage (runterscrollen) ;)