Google Reader 將在 7月1日關閉。雖然谷歌官方提供了Take out用於匯出使用者資料,但匯出的範圍僅限訂閱列表、關注列表、加星或分享過的條目之類,而閱讀過的大部分內容則很難找回來了。GReader Archive 這個工具可以讓大家從 Google Reader 下載到訂閱資料來源的所有歷史資料

GReader Archive 基於網上流傳的 Google Reader 非官方 API,使用 Python 開發、跨平臺,按 GPL 協議開源。值的注意的是,經 Aulddays 實驗,谷歌的伺服器對資料下載的 antispider 做的相當嚴格,所以程式中相應的對抓取速度做了限制,每下載一個資料檔案(預設2000個條目一個資料檔案)會等待 30 秒,因而總的抓取過程會比較長。例如像 Aulddays 這樣重度(100+ subcription,已讀 30w+ 條目)使用者,差不多花了 48 小時的時間。另外,隨著 Google Reader 關閉的鄰近,響應的下載介面可能隨時也會關閉,所以需要下載資料的還要抓緊時間~~

GReader 重度使用者

下載和使用

點選這個連結進入 GReader Archive github 頁面;也可以點選這裡直接下載最新版的壓縮包。

把下載的程式碼放在某個目錄下,執行 run.py,提示輸入 Google Reader 的賬戶資訊,驗證通過後即可開始下載。Linux 下一般已內建了對 Python 的支援。Windows 下可能需要另外安裝 Python 元件後執行。Aulddays 在 Windows + Python 2.7 和 Linux + Python 2.6 下測試執行正常。Python 3.x 在語言上和 2.x 不太相容,無法執行。

檔案組織和硬碟空間

GReader Archive 下載的所有資料都會儲存在 data 資料夾下。每個 RSS 訂閱源會建立一個單獨的資料夾,該訂閱源的資料會按 2000 條一個檔案的方式切分放在資料夾下。如果您的 Google Reader 賬戶中對訂閱做了資料夾的組織,那麼 data 資料夾中也會建立相應的子資料夾

由於每個訂閱都會下載 Google Reader 中的全部歷史資料(這個後面還會詳說),最終佔用的硬碟空間可能比較大。 Aulddays 的 100+ 個訂閱源共產生了 2GB+ 的資料。所以下載前最好留出一些硬碟空間

斷點續傳

由於總下載時間會比較長,GReader Archive 支援斷點續傳。在下載過程中可以隨時關閉程式。當下次啟動時,如果輸入的賬戶資訊與之前相同的話,程式會給出下面的選項:

Unfinished download found. Continue (press c) or Start over again (press s)?:

此時選擇 ‘c’ 就可以繼續上次未完成的下載了。

Antispider

谷歌的 Antispider 做的比較嚴,儘管程式裡設定了抓取一個等待 30 秒,執行一段時間之後還是有可能被谷歌 Antispider 了,此時程式 log 裡會列印如下資訊:

2013-05-22 18:04:45,667 [INFO] Client IP antispidered. wait 1 hour and continue...

遇到這種情況,可以有以下選擇:

  1. 如果你的外網 IP 可以換(例如 ADSL,斷線重連下有很大概率 IP 就換了),那麼換新 IP 之後基本可以原地滿血復活。如果不想等 1 個小時,那麼可以配合上面的斷點續傳進行~~
  2. 如果 IP 是固定的,那麼據經驗看 4-5 個小時之後會解除 antispider,此後程式會自動繼續
  3. 如果很久也沒解除,建議關閉程式,等 24 小時後再斷點續傳
  4. 如果頻繁被 antispider,可以考慮把等待時間改成一些,在 run.py 開始有一行:waittime = 30

下載速度

某些朋友的網路訪問谷歌可能不太順暢,進而造成下載緩慢。GReader Archive 支援自定義谷歌伺服器 IP,大家可以針對自己的情況將自定義 IP 寫在 conf/customip.list 檔案中,每行一個地址。有一個示例放在了 conf/customip.list.sample,裡面的 IP 可能(僅是可能)改進某些地區的下載速度,將它重新命名為 customip.list 即可生效。

作者建議慎用自定義 IP 的功能,因為使用了非官方的地址可能會造成下載失敗甚至賬戶資訊洩露。建議使用時配合下面的高階話題。

高階話題

值得注意的是,對於一個 RSS 資料來源,通過 GReader Archive 下載到的並不只是本賬戶閱讀過的資料而是該 RSS 資料來源的所有歷史資料(更準確的說,是有任何一個使用者在 Google Reader 上訂閱了該資料來源以來的所有資料)。也就是說,用任何一個賬戶登入都可以下載到 RSS 源的完整歷史。基於這個特性,可以做一些有意思的事情,舉例如下:

  1. 由於 Google Reader 使用了非官方的 API,為了保證我們的正常賬戶不受影響,可以找個馬甲賬戶來執行。馬甲賬戶中也無需一個一個手動新增訂閱,用 Takeout 匯出再匯入即可。
  2. 假設某個訂閱源需要單獨下載(例如之前下載失敗或有更新想重新下載),也可以使用馬甲使用者來搞定。
  3. 有些以前的網站現在已經關閉了,但其 RSS 內容很可能在 Google Reader 上還有存檔,只要知道以前的 RSS 連結就可以下載到了。