2012年5月20日 星期日

[C] PTTMAIL2HTML 把站內信轉成網頁

下面就直接從PTT複製過來(?

不知道鄉民知不知道 PTT 的信件打包功能。簡單說就是把信箱內所有文章備份,打

包成一個壓縮檔,再寄去指定的email。

    壓縮檔解開後是散落的文章與.DIR文章列表,這個軟體就可以把整個資料夾轉成

HTML格式。

    可以正確轉換 ANSI ,已在 IE6-8 / FF / OP / GC 測試過。轉出來的 HTML是 UTF-

8 格式,不會有亂碼問題。在非IE系列的瀏覽器上有外掛 Linkify ,能自動將http 網址

轉成超連結或圖片。

下載點︰
http://is.gd/J9nRlf

程式介面http://i.imgur.com/9x7FT.png

轉換過程http://i.imgur.com/iOeYx.png

輸出的目錄http://i.imgur.com/htv5u.png

文章目錄,日文不會亂碼http://i.imgur.com/hLmtV.png

轉出來的ANSI圖http://i.imgur.com/7fpvj.png

網址被轉成圖片http://i.imgur.com/VRruG.png

使用感想:

    其實這也可以用來製作文摘/整理ANSI圖。把文章通通轉到信箱,打包,再做成網頁。

但PTT有限7天只能打包一次就是了。

    原始碼中 main.cpp 裡有函式 convert_ansi() 用來把文章轉成 HTML ,稍微修改也

可用來轉換 PCMan 下載下來的ANSI檔。


附註:

    因為測試的次數不多,還請多多給建議 / 回報Bug了。

    為了做文字對齊,所有雙位元字外都包了Span限寬度,造成轉出來的體積有點龐大...

一般的文章加上10幾行的推文,檔案大小大約在10~15K左右。以我為例,轉出來的資料夾

大小是原資料夾的8倍Orz(2M ->  16M)。現在想找UAO的結構文件,如果能只對齊半形日

文與特殊符號就最好了。

15 則留言:

  1. 這個轉換機制能不能做成 Chrome 或 Firefox 的擴充套件?
    然後透過他來開啟 local 保存的 ANSI 文件,並獲得 HTML 形式的瀏覽
    這樣可以節省許多佔用容量,也不必同時保存 ANSI 和 HTML 兩種版本

    回覆刪除
    回覆
    1. https://addons.mozilla.org/zh-TW/firefox/addon/ansi-viewer/

      刪除
    2. 原來早就已經有了!

      感謝 欸特 造福人群 :)

      刪除
  2. 1.可以為藏在右鍵選單中的 View as ANSI 設定觸發熱鍵嗎?
    2.建議讓使用者加入合法副檔名清單,不要只預設支援 .ans

    謝謝!

    回覆刪除
    回覆
    1. 和這篇文章無關的建議可以去 ANSI Viewer 那邊開個 issue
      https://github.com/eight04/ansi-viewer/issues

      刪除
  3. 有辦法合併檔案嗎
    信箱爆了兩次
    所以打包兩次
    所以有兩個檔案
    有辦法合併嗎

    回覆刪除
  4. 我現在用 https://github.com/eight04/ptt-article-parser 和 https://github.com/eight04/ansi-viewer 處理存回來的文章。

    一個用來把文章重新命名,一個用來檢視文章。

    回覆刪除
    回覆
    1. 瞭解
      試試看
      所以沒有辦法彙集成一個目錄網頁檔案?

      刪除
    2. ptt-article-parser 這個工具只是用來重命名檔案,不能產生目錄。

      至於用 PTTMAIL2HTML 所產生出來的網頁檔,你可以用文字編輯器手動把 index.html 內的表格貼到另一個檔案內。稍微解釋︰

      一列表格由 <tr> 開頭 </tr> 結尾,所以你要做的就是把其中一個 index.html 內的 <tr> .... 複製起來,接到另一個 index.html 內最後一列 </tr> 的後面。然後再把 Articles 資料夾的內容也丟進另一個 Articles 資料夾內。

      刪除
    3. 關於ptt-article-parser
      不曉得操作方法
      結果跑出
      [None] None [None] (None).ans

      刪除
    4. ptt-article-parser 在讀取文章內容後,會把作者、標題、看板等資訊抓出來,並用於重新命名。如果該篇文章是站內信(內容中沒有作者、標題等資訊)就會看到全都是 None。

      刪除
    5. 站內信?
      話說打包基本都是站內信...
      那如何取得非站內信
      下載網頁?

      刪除
    6. 在文章列表按大F,轉寄地址輸入自己的ID,就可以把整篇文章轉寄到自己的信箱內。

      目前的 ptt-article-parser 的確沒有能力處理一般(由人寄出)的站內信,應該讓它和 PTTMAIL2HTML 一樣從 .DIR 檔讀作者和標題。
      https://github.com/eight04/ptt-article-parser/issues/1

      刪除
    7. 恩……
      不懂
      本來就不會ptt-article-parser的詳細操作
      會跑出[None] None [None] (None).ans
      是我用PTTMAIL2HTML讀取.dir後取出網頁檔
      然後建立.bat內容是pap rename ./M.*
      這樣
      也不知道操作對不對...

      刪除
    8. .DIR 檔案裡有站內信的標題和作者資訊。

      * PTTMAIL2HTML 會讀取這個檔案並產生 index.html 目錄。
      * ptt-article-parser **不會** 讀取這個檔案,它是從文章內容找作者和標題。換句話說,如果要處理一般的站內信(沒有看板、標題、作者),這個工具完全沒用。

      總結來說,如果你要解決原問題「如何合併PTTMAIL2HTML所生成的兩個目錄」可以參考前面的留言︰
      http://eight04.blogspot.tw/2012/05/c-pttmail2html.html?showComment=1510918636483#c5239572637844615390

      至於「ptt-article-parser 無法處理普通的站內信」的問題,要過段時間我才會修改。

      提醒幾點︰

      1. ptt-article-parser 不能用來重命名 PTTMAIL2HTML 所產生出來的網頁檔(.html 結尾的檔案),而是用來重命名剛解壓縮出來的原始檔(M.123456789...之類的檔案)。
      2. 原始檔若被 ptt-article-parser 改名,PTTMAIL2HTML 就無法根據 .DIR 檔案找到對應的文章。所以在不確定 ptt-article-parser 如何使用前,可以先備份原始檔(或保留原先下載回來的壓縮檔也行)

      刪除