Fold All / Expand All

2016年2月21日 星期日

Convert torrent link in forum post to RSS feed

記錄一下,目前有個嚴重的缺點還沒處理

主要功能是把字幕組的發佈文章,裡面的 torrent link 找出來,產生為 RSS feed,這樣就可以讓 BT 軟體定時去 update RSS feed,做到定時下載

這次嘗試了幾個 PHP library

php rss writer 是用來產生 RSS feed,其實產生基本的 RSS feed 也不難,不過既然有 library 就試一下

transcoder 是用來轉 encoding,因為論壇的編碼是用 gbk,當然這用 mb_convert_encoding 就可以

最後是 requests 啦,之前有用過的 HTTP client library,有用到 cookie 之類的話,可以比 curl 少寫一些東西,不過這次只用到 Requests::get($url); 這種簡單寫法

好啦,其實概念很簡單,就是設定網址,把裡面的幾個內容 parse 出來,對應到 RSS 要填的值,包括:
  • title: 用 torrent 檔名稱
  • link: 用 forum post
  • pubDate: 要 parse 附件上傳時間,餵給 php-rss-writer 需要是 timestamp,所以要轉一下
  • enclosure: url 就是附件網址,length 可以 parse 到附件大小,type 填「application/x-bittorrent」
  • guid: 直接拿 enclosure url 填
好,到這裡,似乎一切傷當美好,但是丟到 RSS reader 之後,卻出現每次 parse 後,相同 item 又被加入

檢查了一下,發現每次 attachment link 會改啊…原因是 Discuz 的 attachment id,是把數個資訊用 base64 跑過,而其中包括了 request 時間,所以每次要都會不一樣啊…

要解決這個問題的話,看來在 parse 完,就得自行存一份已 parse 過的內容,可能拿 title 當 unique key 吧,已經有存過的 url 就不要再更新才行

還是來試試改 parse DHT magnet search engine?

沒有留言: