MetaWeblog API בלהק

user "להק שחפים" מאת meir   פורסם לפני 9 שנים, 2 חודשים   תגובות 7 תגובות
תגים: להק

בעקבות בקשת גיא לאפשרות למשוך את תוכן המסמכים דרך API חיצוני, הוחלט ליישם פונקציונליות שכזו.

היו שני מועמדים:

החלטתי ללכת על MetaWeblog API מאחר והוא מתאים יותר לסכימת ה-url של להק ... סתם, העדפתי אותו כי הוא מממש XMLRPC שקל יחסית לממש במגוון שפות תוך שימוש בספריות מובנות ו/או חיצוניות ויותר מערכות משתמשות בו .

ממשק ה-XMLRPC זמין בכתובת http://www.zulo.org.il/doc/meta/weblogapi/. כרגע מיושמת רק פונקציית ה-getPost שמאפשרת לקבל מידע על מסמך. בהתאם להגדרות היא מקבלת שלושה פרמטרים:

  • postid : מזהה המסמך, בעצם ה-slug שלו המשמש לקישור ה-url
  • username: שם המשתמש בזולו/להק
  • password: הסיסמה בזולו/להק

בהתאם להגדרה יוחזר מבנה (struct. בפייתון יהיה dict, ב-php מערך אסוסיאטיבי) המכיל את השדות הבאים:

  • postid: ה-slug של המסמך
  • dateCreated: תאריך יצירת המסמך
  • title: כותרת המסמך
  • description: תוכן המסמך המעובד ל-html
  • categories: התגים של המסמך (מערך של מחרוזות)
  • publish: צריך להיות שם, במקרה של התיעוד תמיד יהיה True

הנה דוגמא ללקוח בפייתון ב-shell האינטראקטיבי אשר מחזיר את המסמך שידור חי מכנס איגוד האינטרנט :

>>> import sys
>>> import xmlrpclib
>>> rpc_srv = xmlrpclib.ServerProxy("http://www.zulo.org.il/doc/meta/weblogapi/")
>>> doc = rpc_srv.getPost('live', 'username', 'password')
>>> print doc['title']
שידור חי מכנס איגוד האינטרנט
>>> print doc['description']
<div class="document">
<p><strong>שלום!</strong></p>
<p><strong>תם השידור החי</strong></p>
...(נחתך למען הבהירות)
>>> for tag in doc['categories']:
...     print tag
...
כנס
שידור חי
איגוד האינטרנט הישראלי

יכול להיות שיהיו בעיות עם קידודים (יוניקוד/utf-8) במקרה כזה אשמח למשוב.