2009年6月26日 星期五

[PHP] 實作 XML-RPC Client 筆記 - Blog with Pixnet , Wordpress , Roodo , Blogspot

幾個月前為了實作部落格同步程式,所以使用了 XML-RPC ,但僅小試一下,久了又忘了它,直到上上個禮拜,我又重新整頓一下,正式實作 XML-RPC 的發文程式,在此就順道筆記一下,因為各家實作並非完整。


關於 XML-RPC 可以參考以下資訊



其中,我使用 The Incutio XML-RPC Library for PHP 來實作部落格同步程式,或者是說,部落格發文程式。其版權宣告為 Artistic License


在實作過程中,碰見四類 API



然後,就上述提及的 Blog ,依序使用或支援的 XML-RPC



  • Wordpress

    • WordPress API

    • Movable Type API

    • MetaWeblog API

    • Blogger API

    • Atom API



  • Pixnet

    • WordPress API

    • Movable Type API

    • MetaWeblog API

    • Blogger API



  • Blogspot

    • Blogger API



  • Roodo

    • Movable Type API




接著,探討一個重要的議題:「是否能夠決定發文的時間呢?」



  • WordPress

    • metaWeblog API : Yes



  • Pixnet

    • metaWeblog API : Yes



  • Blogspot

    • Blogger API : No



  • Roodo

    • Movable Type API : No




最好的測法就是打開 Windows Live Writer 去進行測試,其中,Blogspot 可以的原因是使用 GData API ,這是我抓封包時才發現的,原先我一直以為 Blogger API 是可以的。


因此,如果要撰寫部落格同步程式,那可以實作在發表的同時,讓程式自動再透過 XML-RPC 幫你發文到各處去,如此一來將沒有時間上的問題,但這並不是我想寫的程式,我想要的是讓程式默默地幫你完成同步動作,也就是為什麼我需要能自訂發文時間的功能。


簡言之,搞到最後我寫的程式僅能用在 WordPress 跟 Pixnet 上正常使用囉。建議有興趣的人,可以嘗試先下載 Wordpress 的原始檔來看看,裡頭有個 xmlrpc.php 檔,雖然是 Server Site 的,但也挺好參考的喔。


最後,就小試一下啦。此程式可以發文至 Pixnet 和 WordPress ,但對於 Roodo 則是因為無時間支援,僅以當下的建立的時間為準,而 Blogspot 的話,可以把 metaWeblog.newPost 換成 blogger.newPost 並且把 $content 直接設值成文章內文即可,不需保持 Array 的架構,因為它本身僅提供文章內文,連標題設定都沒有。各家的 API 位置,大多是連到對方的 Blog 上,點選原始碼查看 EditURI 的敘述位置,而那個位址基本上不是 API 位置,請再點選它,理論上會蹦出一個網頁再告訴你各個支援 API 的位址,再把你想用的 API 更新在 $blog_info[3] 上。而 Roodo 比較特別,請直接用 "http://xmlrpc.blog.roodo.com/cgi-bin/mt/mt-xmlrpc.cgi",此程式僅適合提供 metaWeblog API 為主。



沒有留言:

張貼留言