由於小弟有使用 BT,而 Linux 上的 client 端我都是使用 bittornado, 因為簡單且 btlauchmany 很方便使用,搭配 screen 遠端抓檔案時在很方便了.
但有一個問題是該軟體在儲存檔案時,無法以現有的 charset 儲存,比如現在我使用 UTF-8 的環境,而 torrent 的發布者如果是 gb2312 or big5 or whatever 的話,就無法讀取,必須使用 iconv or some tools to change the filename.
所以我希望能修改成儲存檔案直接以 UTF-8 儲存,testing/unstable 中的版本已經有支援 unicode, 但只有加入 saveas 的方式,如果該 torrent 是目錄的話,那下載好目錄下的檔案依舊不是 UTF-8.
看了 source code 之後,發現 bittornado 會先讀取 meta 資料(btshowmetainfo 可以看 torrent 的資訊),然後儲存將要下載的檔名.
而小弟就從抓到檔名這個地方著手,先將字串轉成 unicode,然後再儲存,算是解決了部分的問題.比較不完美的地方是對於一些有空格,@...等特殊混合檔名會出錯.如果用 echo "filename"|iconv -f charset1 -t utf8 無法轉換的話,幾乎會出錯. 埃...
不知道是不是這些字元在 python-cjkcodec 中沒有 charmap 的對應所造成的,總之...似乎作了一下午的白公...
但也有收穫,像是知道有下載速度的限制以及一些參數是說明檔沒寫的,希望能有所突破...