2009年9月27日

RSS2Blogger 開發記錄

最近很努力在搞 RSS2Blogger 搬家工具,事實上也弄出了一個試用版可以開始進行搬家作業。不過因為一開始規劃失當,加上拿別家的 rss 檔測試時出了一點小 Trouble ,所以目前重新改寫中...

本文作為開發過程中的點滴記錄...
  1. Google Data API 的版號設定很奇怪:在檔案名稱部份只編到 1.0/2.0/3.0 ,但實際上的版本設定已經到了 1.38 了。這種怪異的版本設定方式導致 Maven 很難對 GData API 的 jar 檔進行版號管理,除非在建立檔案庫時將版本號改成 xxxx-1.0-1.38.jar 這類格式。
  2. 原本的 SnipSnap 及 WordPress 這兩個 Blogger 系統都會在 RSS 檔中加入一個 <content:encoded /> 元素,但是 Blogger 只有 <description /> 元素。檢視的結果發現部份 BSP 會使用 <description /> 元素放置文章摘要,而 <content:encoded /> 則放置完整內文。
  3. 順手查了一下各 BSP 的 RSS 檔,Pixnet、Yam 有提供 <content:encoded /> 元素,Wretch 則沒有。另外補充一點是 Wretch 還特地封鎖掉諸如 wget 這類工具讀取 RSS 檔的資格,有點莫名其妙。
  4. 在設定文章的發表時間時是使用 Entry.setPublished() 這個 method,不過當用來匯入 Blogger 的 RSS 檔時會出現這麼個訊息,但問題是所傳入的日期資訊好歹也是用 GData API 內的工具去 parse 的,結果自己吐出來的東西又不吃?只能說 GData API 真偏食...
    Entry.published must have a timezone.
  5.  後來,我自行填入 TimeZone Offset 值為 0 終於通過前述考驗,不過當文章發佈出來後卻發現,時間一整個莫名其妙的不對... 發佈時間從本來的 +00:00 變成 -07:00 了... 莫名其妙嘛...
  6. 我已針對漏失 TimeZone 資訊的部份發起了一份 issue ,希望能快點確定是否為 bug !

特殊控制:因為懶的另外處理設定檔,所以某些設定可以掛在 RSS 檔內
  1. 草稿模式:預設匯入文章時會統一指定成草稿模式,不過如果患心有室肥大症,心臟比較大顆的人,可以在 RSS 檔中加入以下設定。如果是放在 channel 區段中屬於全域設定,放在 item 區段中則限該 item 有效。
    <draft>false</draft>
  2. 替換作業:原本是規劃將不需要、不正確的圖形刪除,但後續為方便處理表情符號所需,改成可執行替換方式辦理。共有三種設定型態:
    • <pattern>
        <regex><![CDATA[source string]]></regex>
        <replacement><![CDATA[replacement string]]></replacement>
      </pattern>
    • <pattern>
        <regex><![CDATA[source string]]></regex>
      </pattern>
    • <pattern><![CDATA[source string]]></pattern>
    第一種屬於原始設定方式;第二種是第一種的簡化型,其意等同於將指定字串替換成『空字串』(等於刪除功能);第三種再等於第二種的簡化型,總而言之就是懶而以。
  3. 待處理連結:主要是因應連結不正確的情形,此時一律會設定成草稿模式以利後續處理。
    <forceDraft><pattern><![CDATA[<img src="http://blog.adahsu.net/ada/[^>]*>]]></pattern></forceDraft>

逆境:基本上 RSS2Blogger 相關功能似乎已備妥,問題是偉大的 Google Data API 有每天 50 筆的限制。而且這個 50 筆限制的解除得等 24 小時候才能解除,等於每 50 篇約需花上 24.5 小時。這表示要把 13xx 筆一般文章搬到 Blogger 就要花上 54 天以上的時間...

有沒有 Blogger 討厭人家把 Blog 搬進 blogspot.com 的八卦啊?