Category Archives: Programming

Programming

copyblog.pl

copyblog.pl 是一隻以 GPL 發佈 Perl script,透過 XML::Feed 將 RSS 或 Atom 將某個 blog 的東西擷取下來,再用 WWW::Mechanize 將內容發表到其他的 blog 上。

目前支援的 blog system 有:Blogger無名小站 Blog樂多 Blog

實際已經用在 http://gslin.org/ 送到 http://gslin.blogspot.com/http://www.wretch.cc/blog/darkkillerhttp://blog.roodo.com/gslinn/,每二十分鐘會跑一次這隻程式。

需要裝的 Perl modules 包括:

  • GDBM_File (通常是 compile Perl 的時候要把 GDBM 包進去),如果你不喜歡用 GDBM,可以換用 NDBM 或是其他 tie 有支援的 dbm。
  • WWW::Mechanize
  • XML::Feed

大致講一下內容:

feed 的部分是寫死的,我目前是用 http://gslin.org/wp-atom.php,理論上 XML::Feed 可以接受 RSS 三個版本 (0.91、1.0、2.0) 以及 Atom,不過我沒測過 RSS。

另外你要設定 $pw,記得先把 copyblog.pl 改成 700 再把密碼填進去。如果你不同的 blog 用不同的密碼,那麼乾脆直接寫在 post_blog_blah() 裡面好了…

用法的部分,直接執行不加參數會去 feed 上看看有沒有新的文章,有的話就 post 到其他 blog,通常就是放在 crontab 裡面跑。

參數的部分,-d 表示 debug,-v 表示要看一些 message (想要知道他有沒有在動之類的),-h 則是 show usage。

而 -a 表示 feed all (通常用在第一次要將最新的 n 篇貼上去),而 -i 表示只要 copy 某篇,後面接的參數是 Unique ID,在 WordPress Atom 用的是 URL (反正是 unique),其他家我就不知道了。-u 表示 update only,只更新 local db 紀錄,不會 copy 出去。

有任何問題,您可以寫信問我,或是在這幾個 blog 上留 comment 也可以,理論上這幾個系統都會 mail 給我。(至少 gslin.org 與 roodo 會)

程式寫的亂七八糟,請不要扁我 XD

呃…

真是沒營養的標題… 不管,講正事。

昨天寫完 copyblog.pl 後,就有人在 roodo 的 blog 上留 comment 問可不可以公開,答案當然是可以,只是我裡面放了一堆密碼 (雖然都是同一組,用來給不屬於自己控制的 site 用的),要清一下密碼才能放 XD

而且我打算要再寫 pixnet & Ptt2 (可能要用 PerlExpect 來寫),實在不想這麼早放 XD

另外一件事是有位 roodo 的先生 (也有可能是女士,我不曉得 :p) 寫信問我有沒有興趣一起開發,可是我是大六學生要考研究所,沒什麼時間寫這個… 看四百多個 bloglines feed 挑有趣的 post 在板上就用掉不少休閒時間了 :p

這陣子是讀 Algorithm & Organization 念到頭暈腦脹才跑來寫這個東西的 (基本上「幹壞事是進步最大的原動力」(Google search link) 是我的名言,沒有幹壞事的動力要寫 code 是很困難的 :P

而且我之前在 pLog 鬧場鬧的大家都不愉快 (「How to get pLog 1.0 beta version 以及一些廢話」這篇,基本上就是找資料找到不爽,然後嘴巴特別賤 XD),我跑去哪個陣營哪個陣營倒楣 :P

感謝您的好意 XD

四站聯合放送?

寫完邪惡的 copyblog.pl 以後,我在 gslin.org 這個站寫完 blog 後,會在二十分鐘內往其他三站更新:

我本來要寫 xuite 的,後來想起,如果連 blog 都讓 HiNet 大起來的話就糟糕了 (好機車?:p),所以就不寫了…

剛剛突然想到我在 kkcity 有個 kkblog 可以用,改天再來寫好了…

用 XML::Feed 同步兩邊的 blog

刻了一個小程式,用 XML::Feed 取得 entry 後 (同時支援 RSS 0.91、RSS 1.0、RSS 2.0、Atom,不過我是抓 Atom 的),再用 WWW::Mechanize 把文章 post 到 Blogger 上。(Net::Blogger 是個鳥蛋,不能填 title,那要幹什麼啊 -_-)

每二十分鐘 (crontab 裡面是寫 9-49/20 * * * *) 後跑一次,這篇特地拿來測看看有沒有問題的 XD順利的話也來寫 wretch & roodo,然後再 announce 出來好了…

PS:XML::Atom 也是個鳥蛋,content 抓出來的東西是錯的 -_- 不知道是不是 CDATA 的部分沒處理好,但是 XML::Feed 看起來也是用 XML::Atom 處理 Atom 的啊 -_-

XMLHttpRequest

看了 XMLHttpRequest 的設計,如同 ijliao 在「XMLHttpRequest」講的:

讓 web application 更像 desktop application 的幕後推手。

這邊有些資料留起來以後參考用: