幾個月前為了實作部落格同步程式,所以使用了 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 為主。
沒有留言:
張貼留言