Plurk-list

從官方備份或 rss 裡產生噗浪發言清單

作者: 資訊人權貴

一、 簡介

[2021/9/3] 重要!! 本專案已過時, 無法處理新版的噗浪 rss 格式。 想要備份噗浪發言, 請改參考 xml-js 把 xml 轉成 json / jq 批次串接多個檔 / 噗浪 rss 備份

我習慣把噗浪當做自己的閱讀書籤, 然後把 所有的噗蒐集在一個頁面, 方便查詢。 噗浪官方是有提供備份功能沒錯, 但是速度超級慢、 疑似會遺漏、 而且一個月限制只能備份一次, 每次備份又必須從頭開始而不能指定從上次結束的地方開始。 這讓我一方面覺得很難用、 一方面也很不忍心經常折磨它。

還好噗浪提供了一個開放的 rss 介面 -- 這也是為什麼我會用它而不用 facebook 的原因之一。 如果定期備份 rss, 其實從這裡面也可重建完整的歷史記錄。

本計畫包含一支小程式 rss2html.php 及本文件, 目的就是要協助噗浪用戶採用比較輕便且高自由度的方式來備份噗浪。 它主要是用來備份自己的噗浪; 不過也可以拿來備份他人任何公開的噗浪。 要使用這兩支小程式, 你必須 (1) 可以從 shell 命令列下 php 指令 (2) 有定期在備份你自己的或某人河道的 rss -- 例如使用 crontab。

因為底層採用 「分析 html/xml 檔案」 的超便利工具 QueryPath (rss2html.php 使用的是 QueryPath 3.0.5 版), 所以這支小程式不到 100 列。 與其說是提供我的兩支小程式, 不如說是提供 「半手工備份噗浪」 的說明文件 (也就是本頁面)。

本頁所提供的方法適用於河道開放的 linux 用戶。 如果你偏好看到簡單易懂/易改的原始碼, 本頁面特別適合你。 如果是 windows 用戶或是私密河道或是嫌下指令太麻煩的讀者, 可參考其他作者所提供、 更友善使用者的 網頁界面windows 可執行檔

二、 rss 轉 html 練習

下載解壓縮本程式之後, 請再解壓縮 ckhung0-plurklogs.zip。 這是範例資料檔, 裡面包含 「資訊人權貴」 河道上好幾週的 rss 備份。

進入該目錄, 可以這樣處理這些 xml 檔: rss2html.php $(ls *.xml | sort -r) > new-plurks.html 這樣就產生了新的備份檔。 注意: rss2html.php 的命令列上可以接受多個 *.xml 檔名作為參數, 但這些檔案的順序必須是由新到舊。 (所以上面需要 ls *.xml | sort -r) 這樣 rss2html.php 才能正確地按順忽略其中重複出現的噗。

從舊的備份檔裡找到最後備份到的一噗, 來這個新的備份檔裡, 把它以下的所有資料全部刪掉。 再把這個新的備份檔手工貼入舊的備份檔當中。

三、 定期備份你的 rss

要如何產生你自己的一堆 *.xml 檔呢? 要在某部 24 小時連線的 linux 伺服器上設定定期抓取自己噗浪的 rss。 請先確認 你會用 vim 或已把系統預設編輯器改成自己熟悉的工具, 並且建立一個空目錄 ~/plurklogs/ 。 然後建立一個 shell script 叫做 /home/ckhung/cron/weekly (記得設定成成可執行! chmod u+x /home/ckhung/cron/weekly) 裡面只放一句話:

    wget http://www.plurk.com/ckhung0.xml -O /home/ckhung/plurklogs/plurk-$(date '+%y%W').xml

寫好之後不妨先直接執行一次, 看看是否產生一個名為 ~/plurk-backup/rss/plurk-*.xml 的檔案。 這裡的 date '+%y%W' 是在用 date 指令產生一個短短的 「年份週次」 數字, 並嵌入檔名, 以免新的版本覆蓋掉舊的版本。 然後用 crontab -e 指令叫出編輯器、 加入下面這列, 指定每星期六 25 點 87 分固定執行剛剛那個 script:

    87 25 * * 6 /home/ckhung/cron/weekly

這裡故意用 「不存在的時分」 是為了要避免大家照抄, 害噗浪感受到 DDOS :-) 如果你的噗量很大, 也許要改成每天備份: (1) 上面的 date 指令改成 date '+%y%m%d' 以年月日作為 rss 存檔名稱。 (2) crontab 的內容改成 87 25 * * * ...。 再把 weekly 的檔名改成 daily 就更準確了。

這樣, 以後每隔一段時間就可以去 /home/ckhung/plurklogs/ 底下把 *.xml 收割回來用 rss2html 加工成 html 檔。

四、 處理更早的備份資料

[本節內容及 strip.php 程式是 2012 年左右寫的, 可能已過時。 若有讀者提供新版的官網備份資料檔, 我再來更新。] 在你看到本頁之前、 還沒有開始備份 rss 的時候, 過去的那些噗, 就必須先用噗浪官方的備份功能才能挖出來。 例如 ckhung0-backup.zip 是官網版的我的備份資料。 解壓縮之後, 裡面每一噗是一個獨立的 html 檔。 進入子目錄, 執行 php strip.php 4sxz6e.html 4sy6gc.html 4vh8z8.html 會用 <li> 印出這三個噗的摘要。 如果 ok 的話, 就 php strip.php *.html > old.html 當然, 你另外還需要自己準備一個 「噗浪歷史存檔頁面」 骨架, 然後就可以把上面產生的 old.html 貼入 (或用 php 的 include 指令納入) 骨架檔。