htmltodat Ver 0.11.12 Copyright(C) 2002-2018 by mukiyu
【概要】
2ch形式のHTMLをdat形式に変換するソフトです。
過去ログ保存サイト等を見ていて、
「このスレを2ch用ブラウザで読みたい。でもdat形式じゃないしなぁ」
と思ったことが何度かあって(レス番ポップアップが使えるだけでも便利ですし)、
都度スクリプト書いて変換したりしていたのですが、暇なときにプログラムにして
みました。まあ、ただの雑プロです。しかも自分で使うことしか考えてなかった
のでUIはかなり最悪ですw
基本的な機能は、HTMLソースをperl5相当の正規表現を使ってdat形式のファイルに
変換することです。しかし、HTMLの形式はサイトによってほんとまちまちなので、
完全に自動でとはいきません。なので、正規表現を都度指定or編集してから変換する
ような方式になっています。
よって、正規表現がわからないと使えないと思います。
また、HTML、および2ch形式のdatファイルに関するある程度の知識も必要です。
また、datファイル以外の情報ファイル(idxファイル等)を生成する機能はありません。
必要であれば自力で何とかしてください。
(多くのブラウザでは自動もしくは半自動で生成できるようです)
【インストール関連】
適当にフォルダを作って、全ファイルをそこに解凍するだけです。
アンインストールは全ファイル(またはフォルダごと)を削除するだけです。
レジストリは使用していません。
バージョンアップの際は、基本的にはexeファイルと、readme.txtファイルのみ上書き
してください。
・0.8.21以前からバージョンアップする際にはbregexp.dllも解凍し直してください。
・0.8.19以前からバージョンアップする際にはnkf32.dllも解凍してください。
OSが98系の場合は「98用」以下のnkf32.dllを使用してください。
・バージョン0.8.19には不具合があるため使用しないでください
また、バージョン0.8.19で使用していたnkf.exeも不要になりましたので削除して
かまいません。
・バージョン0.11.10よりSSL/TLSに対応したため、OpenSSLの ライブラリが必須になりました。
http://indy.fulgan.com/SSL/ の openssl-ほにゃらら-i386-win32.zip の一番新しいやつを
ダウンロード・解凍して libeay32.dll と ssleay32.dll をhtmltodat.exeと
同じフォルダーにコピーして下さい。
(OpenSSLのライブラリは最近いろんなプログラムで使われているので
Windowsのシステムフォルダに置くよう推奨したほうがいいのかな?
また、頻繁に更新されているライブラリなので最新の情報をウォッチしておく必要も
あると思われます)
※例外がある場合はこのドキュメント、およびサポート掲示板
(http://jbbs.livedoor.jp/bbs/read.cgi/computer/1929/1038588508/)
で告知します。
regexps.txtは原則として自分で育てていくことになります。
【基本的な使い方】
1.「URL」欄に変換したいスレのURLかファイル名を入力して「HTML取得」ボタンを
押します("http://"で始まるものはURL、以外はファイル名と判断します)。
エラーがなければ「HTMLソース」欄に取得したHTMLソースが表示されます。
「HTMLソース」欄は編集可能なので、ブラウザの「ソースを見る」で表示された
ソースを直接コピペするなどしてもOKです。
※SJISでの保存を前提にしているので、ソースのcharsetがSJIS以外の場合は
「ソース文字コード」を選択して「->SJIS変換」ボタンを押して変換してください。
※↑v0.6.0から文字コード自動判別機能をつけたので、変換ボタンを押す必要は
基本的にはなくなりました。
※↑v0.6.2から文字コード自動判別機能をオプションにしました。通常はONのまま
でいいと思いますが、自動判別がうまくいかないHTMLの場合OFFにしてください。
2.「正規表現」欄に入力します。後で詳しく書きますが、直接入力するのは面倒
なので、一覧から選択できるようにしています。「一覧表示」ボタンを押して
正規表現一覧ウィンドウを表示し、適当なものを選択して表示させます。
3.必要であれば「変換オプション」ボタンを押してウィンドウを開き、
各オプションに適切に入力します。
4.「変換開始」ボタンを押します。
「dat変換結果」欄と右側のプレビュー欄を確認して、それなりに正しく(?)
変換できているようならば、「dat保存」ボタンを押してdatをファイルに保存
します。
うまく変換できないときは正規表現を再選択したり編集したりしてください。
(次項参照)
※「取得即変換」チェックボックスをONにしておくとHTML取得後に自動的に変換
処理を開始します。正規表現や変換オプションが確定している場合にお使い
ください。
※dat保存はデフォルトでは文字コードSJISで保存しますが、EUCやUTF-8で保存
する必要がある場合は「保存文字コード」を変更して下さい。
※保存ファイル名は、URLまたはファイル名に9〜10桁の数字が含まれていれば
それを使用し、ない場合は変換結果のレス1の投稿日時より変換しています。
レス1の投稿日時に秒が表示されていないとか、西暦以外の暦が使用されている
場合、本来のdat名と食い違ってくる可能性があります。
※お試し用のファイル(sample.html)を添付してますので、試してみてください。
(正規表現も「sample」を選択する)
※複数のHTMLをいっぺんに変換する一括変換機能もあります(後述)。
※HTML取得時に指定できる受信オプションがいくつかあります(後述)。
※v0.10.0以降、上記のような正規表現一覧からの選択ではなく、より機能包括的な
「prmファイル」と呼んでいるものをサポートしています(後述)。
※v0.11.0以降、標準では使用できなくしている機能がいくつかあります。
フォーム上の何もない領域をダブルクリックすると使えるようになる場合があります。
【正規表現関連】
HTML->dat変換には、Baba 氏作成のBREGEXP.DLL(perl5互換正規表現エンジン)を
利用しています。(http://www.hi-ho.ne.jp/babaq/)
※v0.9.0より変更しています(後述)。
※perl5正規表現の詳細についてはいろんなとこに資料があるので省略します。
一部非互換の部分があるのでhttp://www.hi-ho.ne.jp/babaq/bregexp.html
も参照ください。
正規表現を作成する際は、m演算子を使ってm#hoge#の形式で
$1:レス番号
$2:メール欄
$3:名前・トリップ
$4:投稿日・ID
$5:レス内容
となるように設定します。
※一般的にはm/hoge/としますが、/はHTMLでは多用されるのでいちいちエスケープ
しなくていいようm#hoge#の形式にするのがよいでしょう。
※変換後のdatの形式は、1レス1行で
名前・トリップ<>メール欄<>投稿日・ID<>レス内容<>スレタイトル(1レス目のみ)
の形になります。
※これだけじゃ説明足りないだろうなーと思うので、別テキストに補足説明をつけ
ました。
htmltodatではregexps.txtというファイルに
説明=正規表現文字列
の形式で正規表現の一覧を管理しています。サンプルもいくつか入れているので
参考にしてください(但しサンプルそのものはかなり適当なのでそのまま使えるとは
期待しないでください ^^;)。
かなり貧弱ですが正規表現の一覧を編集する機能もあります。
・メインウィンドウでの機能
「正規表現」欄の上に「一覧表示」「追加」「変更」のボタンがあります。どれを
押しても正規表現一覧ウィンドウが表示されます。
「一覧表示」:単に正規表現一覧ウィンドウを表示します。
最初に正規表現を選択する場合や、別の正規表現を選択しなおす場合に
使用します。
「追加」:現在「正規表現」欄に表示している正規表現を正規表現一覧に新規追加
します。
一覧から選択して編集した後、その編集結果を、選択したものとは別に
新たに一覧に追加したい場合に使用します。また、「正規表現」欄に直接
入力したものを一覧に追加したい場合にも使用できます。
「説明」欄は空で表示されるので保存する前に適当に入力してください。
「更新」:一覧から選択して編集した後、その編集結果をそのまま選択したものに
反映させたいときに使用します。
一覧から選択したものではない場合、「追加しますか?」のメッセージを
出します。OKを押すと「追加」と同じ動作をし、キャンセルを押すと何も
しません。
・正規表現一覧ウィンドウでの機能
regexps.txtの内容を表示したり編集するためのウィンドウです。
「選択」:現在選択されている行の正規表現をメインウィンドウの「正規表現」欄
に表示します。
「削除」:現在選択されている行を一覧から削除します。
「保存」:現在表示中の正規表現一覧をregexps.txtに保存します。
「閉じる」:何もせず正規表現編集ウィンドウを閉じます。
一覧ウィンドウ上での編集も可能です。詳しい説明は難しいですがまあF2キーとか
使えばなんとかなるでしょう。
※regexps.txtファイルに保存を行うのは正規表現一覧ウィンドウで「保存」ボタン
を押す場合だけですので注意してください。
プログラム終了時にも自動保存はしません。
【受信オプション】
以下のオプションを指定できるウィンドウを開きます。
「proxy」
サーバ名(またはIPアドレス):ポート番号 の形式で指定できます。
また、Proxy入力欄横の「追加」ボタンを押すと指定したProxyがProxy.txtという
ファイルに保存され、次回使用時に一覧から呼び出すことが出来ます。
「HTTPヘッダの追加」
HTTPリクエストヘッダに任意の行を追加するためのものです。
例えば
Cookie: text=dat<>1<>0<>false<>mycss=<>0<>0<>3000<><><><>
User-Agent: Monazilla/1.00(htmltodat/0.8.9)
のような感じでヘッダに含めて送信したい内容をそのまま指定します。
また、変換オプション(後述)の前処理等と同様、保存・呼び出しが可能です。
(拡張子は'.hdr')
「URLの変換」
「URL」欄に入力されたURLでそのまま取得するのではなく、何らかの変換を加えた
後のURLで取得したい場合に指定します。
変換方法の指定は、後述の前処理等と同様、sコマンドで指定します。また、これ
も保存・呼び出しが可能です。(拡張子は'.ucv')
【表示レス】
表示するレスの開始〜終了を指定します。
変換処理にはそれなりに時間がかかるので、シミュレーション的にいろいろ正規表現
を変更する場合に使うと便利です。
【変換オプション】
以下のオプションを指定できるウィンドウを開きます。
このウィンドウはモーダルではなくモードレスなので開いたままでもメインウィンドウ
の操作をすることが可能です。
「dat変換をしない(前処理のみ行う)」
その名のとおり、「変換開始」ボタンを押してもdat変換は行いません。
前処理(後述)のみ使いたいような場合にお使いください。
※v0.11.2より、前処理のみ行った結果を「dat変換結果」欄に表示するようにしました。
この結果をそのまま保存する事もできます。
「アンカー削除」:
dat変換時に、レス本文中にあるアンカータグ()を削除します。
ブラウザによっては、変換元のHTMLにアンカータグがついていると>>1のような形式
のポップアップがうまくいかないことがあるので、削除する機能をつけてみました。
念のためオプションにしていますが、たいていの2ch用ブラウザには>>1のような
リンクにはアンカータグがなくても自動で補う機能がついているようなので、通常は
ONのまま使用して問題ないと思います。
「beコード削除」:
dat変換時に、投稿日・ID欄中にあるHTMLタグ(通称beコード)を全て削除します。
beコードの扱いはブラウザによって異なるようなので適宜ON/OFFしてください。
※注:このオプションは作者がまだbeコードの取り扱いを把握していなかったときの
暫定対応でつけたもので、v0.8.6よりbeコード自体のHTML->dat変換を自動で行う
よう変更しているので、意識する必要は基本的になくなっています。
「透明あぼーんを補う」
dat変換時に透明あぼーん(レス番号の飛び)を検出したとき、変換結果のdatに
「透明あぼーんかも」という行を自動的に必要な数だけ生成します。
「プレビューを表示しない」
dat変換時にプレビュー欄を更新しません。
これにより、変換速度が速くなるので、変換経過を気にする必要のないスクリプト等
からの変換の際にはONにすると効率が改善するかもしれません。
「変換結果式指定」:
変換結果のdat形式は、デフォルトでは
$3<>$2<>$4<>$5<>
(名前・トリップ<>メール欄<>投稿日・ID<>レス内容<>)
となるのですが、HTML上でメール欄と名前欄が位置が逆転するようなケースもあるので
そういう場合に形式を変更するために指定します。例えば
$2<>$3<>$4<>$5<>
のように指定します。
もちろん正規表現自体もそれに合わせたものにする必要があります。
※注:区切り文字は「<>」以外は使用しないでください。
(カンマ区切り等にしても正しく動作しません)
「前処理」:
dat変換の前に何らかの加工が必要なケースで指定します。
perl5のsコマンド(置換)の形式で s#変換前#変換後# のような形式で指定してください。
この処理は変換前のHTML全体に対して作用します。必要であればgスイッチ等を使用して
ください。
また、変換の過程をファイルに出力するために、w ファイル名 の形式のコマンドが使用
できます(例:w debug.txt)。sコマンドのデバッグ用等に使ってください。
また、s、w以外で始まる行は無視されますので、これを逆用してコメントを書くことも
できます。
※前処理のsコマンド中では置換ワード$server,$boardが使えます。
これらのワードは、変換オプションの「$server」「$board」の入力値と置き換わって
処理されます。
※前処理のwコマンドではファイル名に置換ワードが使えます。
使えるワードは$FILE,$ORGFILE,$PLAINFILE,$SELECTFILEの4種で、元のファイル名
から拡張子を取り除いたものに置き換わります。これらは、保存フォルダの形式により
使用法が異なります。基本的には w $FILE.dbg のような形式で使用します。
・$FILE:ファイルの保存フォルダがhtmltodatのインストールフォルダになります。
・$ORGFILE:ファイルの保存フォルダが元ファイルと同じフォルダになります。
・$PLAINFILE:保存フォルダを付加しません。なのでこれを使う際には絶対パスを
指定して下さい。(例:w c:\test\$PLAINFILE.dbg)
・$SELECTFILE:自動でファイル保存することはせず、ファイル保存ダイアログを出し
ます。元のファイル名と変えたい場合等に指定して下さい。
※これらの置換ワードは基本的に元データがファイルの場合のみ利用可能です。
(元データがURLの場合保存ファイル名を厳密に確定することが難しいため)
但し、$SELECTFILEだけは元データがURLであっても利用可能です。
※保存する文字コードをSJIS以外にしたい場合は w コマンドの変わりに we コマンド
(EUCの場合)もしくは wu コマンド(UTF-8の場合)も利用できます。
(例:wu hoge.txt))
「後処理」:
dat変換の後に何らかの加工が必要なケースで、前処理と同様の形式で指定します。
指定の方法は前処理と同様です。
「変換結果式」「前処理」「後処理」は、「正規表現」欄と同様、「一覧表示」
「追加」「更新」のボタンで一覧から選択・保存できるようになっています。
使い方も「正規表現」欄のものとほぼ同様です。
(サンプルも多少つけていますので参考にしてください)
※正規表現はregexps.txtの一個のファイルに保存されますが、変換処理式・前処理・
後処理については、一つのパターンを一つのファイルに個々に保存するようにして
います。
(実装が簡単だったからというのが主な理由ですが、エディタ等で修正したい場合
にも構造が簡単なのでやりやすいかと思います)
実際のファイル名は、サンプルを見てもらえればわかると思いますが、拡張子が
変換結果式:cvr
前処理 :bcv
後処理 :acv
となります。
名前を変えたい・削除したいときはhtmltodatを終了させた状態でエクスプローラ等
から直接変更してください。
【一括変換】
変換したい対象のファイルが複数あって、いっぺんに変換したい場合に使用します。
同じサイトの過去ログ集などで、同じ正規表現・charsetが適用可能なことが確認済みの
場合のみ使えます。
(同じサイトのログ集であってもサイト管理者が全て同じ形式でログを提供しておられる
とは限りません。そこは自力でなんとかしてください)
※一括変換機能はローカルのファイルにのみ使用可能です。
「このサイトの過去ログを全部変換したい」ようなときに使いたい場合が多いかと
思うのですが、一旦ダウンロードソフト等を利用して適当なフォルダに保存してから
使ってください。
・まず正規表現を指定します。
・必要であれば「アンカー削除」等のオプションを変更します。
(メインウィンドウで変更されたオプションは全て一括変換にも適用されます)
・「一括変換」ボタンを押します。
・変換元フォルダと変換先フォルダをそれぞれ指定します。
変換元フォルダの直下の拡張子.htmlまたは.htmのファイルが変換対象になります。
(それ以外の拡張子のファイルを変換したい場合は「変換対象拡張子指定」に入力
して下さい)
サブフォルダ以下は対象にはなりません。
変換結果は元のファイル名で拡張子が.datになって出力されます。
※v0.7.3より、「dat名をレス1から取得」オプションをつけました。
これがONの場合、元ファイル名が9〜10桁の数字ならそれをそのまま使用し、そうで
ない場合にはレス1の投稿日時よりdatファイル名を決定します。
基本的にはONのまま使用して問題ないと思いますが、どうしても元ファイル.datで
保存する必要がある場合はOFFにして下さい。
・変換元のファイルのcharsetがEUCまたはUTF-8の場合は「htmlの文字コード」を変更
します。
※基本的には文字コード自動判別がONであれば指定は不要です。
自動判別がうまくいかないHTMLの場合のみ適切に指定して下さい。
・変換先フォルダに同じファイル名が既にある場合に上書きしてよければ「既存時上書」
チェックボックスをチェックしてください。
チェックしないときは、同じファイル名がある場合は上書きしません。
・「変換開始」ボタンを押すと変換処理を実行します。
ウィンドウ下部に変換結果が逐次表示されます。すべてのファイルを処理し終わると
「完了」と表示されます。
【subject.txt作成】
datファイルからスレタイトルとレス数を抽出してsubject.txtファイルを作成します。
・「subject.txt作成」ボタンを押します。
・datファイルのあるフォルダを指定します。
指定したフォルダの直下の拡張子.datのファイルが対象になります。サブフォルダ以下
は対象にはなりません。
・subject.txtファイルを作成する対象フォルダを選択します。
「datファイルと同じフォルダ」または「datファイルの一つ上のフォルダ」のどちらか
を選択します。
これら以外の場所に作成したい場合は作成後手動で移動してください。
・必要であれば「datの文字コード」「保存文字コード」を適切に指定して下さい。
デフォルトはどちらもSJISです。
datをEUCで作成したとか、subject.txtをEUCで保存したいような場合に指定して下さい。
・デフォルトでは改行コード「LF」で作成しますが「CRLF]にしたい場合はチェックを
付けてください。
・旧形式のdat(区切り文字が「<>」でなく「,」)からsubject.txtを作成したい場合は
「旧形式のdatを対象にする」にチェックを付けてください。
※旧形式と現行形式のdatを同時に処理することは出来ません。
フォルダを分ける等して対処してください。
・「作成開始」ボタンを押すとsubject.txt作成処理を実行します。
ウィンドウ下部にdatからの変換結果が逐次表示されます。すべてのファイルを処理し
終わると「完了」と表示されます。
※出力結果の並び順は指定できません。
【バッチファイルやスクリプトから動かす】
htmltodatは起動時の引数を最大3個指定することができます。
これにより、バッチファイルや各種スクリプトから呼び出して半自動的に動作させることが
可能です。
・1つ目の引数はURL、これが指定された場合、URLの項目に値をセットして起動します。
・2つめの引数はパラメータファイル(prmファイル)名、この仕様は後述します。
これが指定された場合、正規表現・前処理等の項目に値を自動でセットし
HTML取得→変換まで行います。
・3つめの引数は出力datファイル名、これが指定された場合、変換結果をそこに出力し
htmltodatは終了します。
・パラメータファイル(prmファイル)の仕様
現時点では
「正規表現」
「受信オプション」の全項目
「変換オプション」の全項目
について指定ができるようになっています。
指定方法は、
正規表現=read.cgi7.00?
変換結果式=メール欄逆転
・・・
のような形式で各項目に設定する選択項目を指定して列挙します。
また、
前処理: ※長くなってきたので不要になった行を削除
# スレタイ補正
s#()(.*?) \| \S*?()#$1$2$3#ik
# ガラガラを適当に除去
s#