したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

htmltodatサポートスレッド

1</b><font color=#FF0000>(L44UP/ps)</font><b>:2002/11/30(土) 01:48
QA・要望等受け付けるかもしれない(?)スレッドです。
作者にスキルがないのでできないことが多いかとは思います。

760名無しさん:2013/05/11(土) 12:15:00
>>759は無しで。</article>を加えたのがまずかっただけでした

正規表現:
m#<article id=\"([^\"]+).*<span class=\"n?em\"><b>(.+?)</b></span>\[(.*?)\] :(.*?)<div class="comment">(.*?)</div>#imk

761名無しさん:2013/05/11(土) 13:48:56
自動判別でのUTF-8→SJISの段階で半角カタカナが全角カタカナになっちゃいますね
その他、アンカーの相対リンクへの置換とHTMLリンクの除去は2chブラウザの動作には影響ないのでそのままにしてあります

なんども投稿して申し訳ないですが、スペースの調整が甘かったのでもう一回修正しました
---------------------------------
Proxyを使う:
false

前処理:
# スレタイ補正
s#(<title>)(.*?) \| \S*?(</title>)#$1$2$3#ik
# ガラガラを適当に除去
s#<script(.|\s)*?</script>##igk
s#<style(.|\s)*?</style>##igk
# ニュー速等のアイコンを2ch形式に補正(663さんのものをアレンジ)
s#<img src="http://cdn.logsoku.com/(img.2ch.net/ico/.+?)&quot;&gt;#sssp://$1#igk
# 「〜回発言」を取り除く(663さんのものをアレンジ)+ID周りの変更を反映
s#<a href=.* class="id_search_btn">(ID)</a>(:)<a [^>]+>(.*?)</a>((.|\s)*?) ?\[.*?\]#$1$2$3$4#igk
# 後ろガラガラの除去(ちょっと修正)
s#<tr(.|\s)*?</tr>##igk
# <br/>タグに対応してない専ブラへの対応
s#<br/>#<br>#igk

dat変換をしない(前処理のみ行う):
false

アンカー削除:
false

beコード削除:
false

透明あぼーんを補う:
false

変換結果式:
$2<>$3<>$4<> $5 <>

正規表現:
m#<article id=\"([^\"]+).*<span class=\"n?em\"><b>(.+?)</b></span>\[(.*?)\] :(.*?)<div class="comment"> (.*?)</div>#imk

-----------------------------------------------

762 ◆/vmukiyuzw:2013/05/12(日) 16:36:24
>>758-761さん
考えていただきありがとうございます。
何点かコメントさせてください。

1.
> 自動判別でのUTF-8→SJISの段階で半角カタカナが全角カタカナになっちゃいますね

気づいてませんでした。これはまずい仕様ですね。
nkfの仕様のようで、詳しい経緯は不明なのですが、推測するに
「ネット(という呼び名ですらなかった頃?)で半角カナ使うなボケェ!」
な時代から使われてるプログラムらしいので、半角カナは全角に置き換える動作が
デフォルトなのかもしれません。
対応策は考えますが、多分また時間かかりそうなので当面nkfを使わない元の仕様に戻す
ことになると思います。(これはこれで問題あるのですが・・・)

2.
正規表現および前処理を考えていただいたのはありがたいのですが、

URLの変換:
s#http://(.+?)/test/read\.cgi/(.+?)/(\d+)/?.*#http://logsoku.com/thread/$1/$2/$3/#

も付けたいところです。
ログ速のURLからではなく、2chの生のURLから(スクリプトを経由して)
htmltodatでログ速を変換しているという方がいらっしゃいますので。

3.
前処理の「ガラガラ除去」はVer0.9.0以降基本的に不要になりましたので
記述を削除してしまっていいと思います。>>739参照。

4.
これは以前から気づいていて、次にログ速の仕様変更があったら反映させようと
思っていたものなのですが。
レス内にニコニコ動画やyoutubeへのリンクが貼られていると、ログ速では
サムネイル画像のタグを挿入してしまいます。なのでこれらのタグを除去しないと
ブラウザによってはそのまま表示されてしまいます。
(表示されても構わない、という方は除去しなくてもいいかもしれませんが)
よって、前処理に以下を追加したいです。

# ニコ動やyoutubeのサムネイル削除
s#<div class='video.*?><div.*?><div.*?></div></div><img .*?></div>##igk
s#<(iframe|img class).+?<br/>##g;


1は当面どうしようもないとして、2〜4を反映させていただいたパラメータの内容は次に。

763 ◆/vmukiyuzw:2013/05/12(日) 16:38:36
>>762続き

URLの変換:
s#http://(.+?)/test/read\.cgi/(.+?)/(\d+)/?.*#http://logsoku.com/thread/$1/$2/$3/#

前処理:
# スレタイ補正
s#(<title>)(.*?) \| \S*?(</title>)#$1$2$3#ik
# ガラガラ除去はVer0.9.0以降不要になったので削除
# ニュー速等のアイコンを2ch形式に補正(663さんのものをアレンジ)
s#<img src="http://cdn.logsoku.com/(img.2ch.net/ico/.+?)&quot;&gt;#sssp://$1#igk
# 「〜回発言」を取り除く(663さんのものをアレンジ)+ID周りの変更を反映
s#<a href=.* class="id_search_btn">(ID)</a>(:)<a [^>]+>(.*?)</a>((.|\s)*?) ?\[.*?\]#$1$2$3$4#igk
# ニコ動やyoutubeのサムネイル削除
s#<div class='video.*?><div.*?><div.*?></div></div><img .*?></div>##igk
s#<(iframe|img class).+?<br/>##g;
# <br/>タグに対応してない専ブラへの対応
s#<br/>#<br>#igk

変換結果式:
$2<>$3<>$4<> $5 <>

正規表現:
m#<article id=\"([^\"]+).*<span class=\"n?em\"><b>(.+?)</b></span>\[(.*?)\] :(.*?)<div class="comment"> (.*?)</div>#imk

764 ◆/vmukiyuzw:2013/05/12(日) 18:48:30
バージョンアップ(というか実質ダウンですが --;)しました(0.10.3)
 ・nkf32.dllの使用を中止し、UTF-8→SJISの変換を0.8.18以前の方式に戻す。

>>762で書いたとおり、半角カタカナが全角に変換されてしまうのは問題が大きいと思われるため
nkf32.dllの使用を一旦中止し以前の変換方式に戻すことにしました。
(当面、ログ速では「〜」が「?」に化けることはないようなので重大な問題はないだろう・・・)

今後の対応としてはnkf32.dllでの回避策を探しつつ他に使えそうなdllも探すということになるかと
思います。ちょっと検索したら有望そうなのを見つけたんですがまだ調べてみないとなんともです。

765 ◆/vmukiyuzw:2013/05/12(日) 19:31:41
すみません、個人的にここ数日多忙で、そこに不具合が見つかったので焦ってしまったようです。
nkf32.dllでの回避策がどうやら見つかったので対応しようと思います。
また修正しますのでしばらくお待ちください。

766 ◆/vmukiyuzw:2013/05/12(日) 20:10:12
バージョンアップ(?)しました(0.10.4)
 ・nkf32.dllの使用を再開。

nkf32.dllでの回避策をテストして問題なさそうだったので再修正しました。
前のバージョン(0.10.3)は誰もダウンロードしてないようなので
幻のものとして忘れてください^^;

767名無しさん:2013/05/13(月) 08:32:13
乙。こいつはありがたいや

768名無しさん:2013/05/28(火) 16:58:09
ログ速で1行が長すぎるか、正規表現が正しくないようです。
とでてログ変換できなくなってしまったんですがどこかコピペミスったかな…
みなさんは問題なく変換できていますか?

769 ◆/vmukiyuzw:2013/05/28(火) 20:34:53
>>768さん
若干ですがまた仕様変更されたようですね。
以下ので多分いけると思います。


URLの変換:
s#http://(.+?)/test/read\.cgi/(.+?)/(\d+)/?.*#http://logsoku.com/thread/$1/$2/$3/#

前処理:
# スレタイ補正
s#(<title>)(.*?) \| \S*?(</title>)#$1$2$3#ik
# ガラガラ除去はVer0.9.0以降不要になったので削除
# ニュー速等のアイコンを2ch形式に補正(663さんのものをアレンジ)
s#<img src="http://cdn.logsoku.com/(img.2ch.net/ico/.+?)&quot;&gt;#sssp://$1#igk
# 「〜回発言」を取り除く(663さんのものをアレンジ)+ID周りの変更を反映
s#<a href=.* class="id_search_btn".*?>(ID)</a>(:)<a .*?>(.*?)</a>((.|\s)*?) ?\[.*?\]#$1$2$3$4#igk
# ニコ動やyoutubeのサムネイル削除
s#<div class='video.*?><div.*?><div.*?></div></div><img .*?></div>##igk
s#<(iframe|img class).+?<br/>##g;
# <br/>タグに対応してない専ブラへの対応
s#<br/>#<br>#igk

変換結果式:
$2<>$3<>$4<> $5 <>

正規表現:
m#<article id=\"([^\"]+).*<span class=\"n?em\"><b>(.+?)</b></span>\[(.*?)\].*?:(.*?)<div class="comment"> (.*?)</div>#imk

770768:2013/05/29(水) 14:58:31
変換出来ました!
素早い対応ありがとうございました。

771名無しさん:2013/05/29(水) 23:04:11
私も変換できました
素早い対応ありがとうございます

772 ◆/vmukiyuzw:2013/06/06(木) 18:25:48
ログ速がまた仕様変更されたようですね。
途中の改行が一切取っ払われてベタッとしたHTMLになって形式的には結構変更されたようですが
htmltodatはまあ一応そういうのも想定して作ってますんで・・・

以下のようなので多分いけると思います。
>>758-761さんの考えてくださった部分を自分好みに一部修正してます。ご容赦を)


URLの変換:
s#http://(.+?)/test/read\.cgi/(.+?)/(\d+)/?.*#http://logsoku.com/thread/$1/$2/$3/#

前処理:
# スレタイ補正
s#(<title>)(.*?) \| \S*?(</title>)#$1$2$3#ik
# ガラガラ除去はVer0.9.0以降不要になったので削除
# ニュー速等のアイコンを2ch形式に補正(663さんのものをアレンジ)
s#<img src="http://cdn.logsoku.com/(img.2ch.net/ico/.+?)&quot;&gt;#sssp://$1#igk
# 「〜回発言」を取り除く(663さんのものをアレンジ)+ID周りの変更を反映
s#<a href="/id.*? class="id_search_btn".*?>(ID)</a>(:)<a .*?>(.*?)</a>((.|\s)*?) ?\[.*?\]#$1$2$3$4#igk
# ニコ動やyoutubeのサムネイル除去
s#<div class='video.*?><div.*?><div.*?></div></div><img .*?></div>##igk
s#<(iframe|img class).+?<br/>##g;
# <br/>タグに対応してない専ブラへの対応
s#<br/>#<br>#igk

変換結果式:
$2<>$3<>$4<> $5 <>

正規表現:
m#<article id="(\d+)".*?<span class="n?em"><b>(.+?)</b></span>\[(.*?)\].*?:(.*?)<div class="comment"> (.*?)</div>#imk

773 ◆/vmukiyuzw:2013/06/11(火) 00:30:17
気がつくとログ速また仕様変更されたようですね。
今回は微妙な変更のようですが。
以下のようなので多分いけると思います。


URLの変換:
s#http://(.+?)/test/read\.cgi/(.+?)/(\d+)/?.*#http://logsoku.com/thread/$1/$2/$3/#

前処理:
# スレタイ補正
s#(<title>)(.*?) \| \S*?(</title>)#$1$2$3#ik
# ガラガラ除去はVer0.9.0以降不要になったので削除
# ニュー速等のアイコンを2ch形式に補正(663さんのものをアレンジ)
s#<img src="http://cdn.logsoku.com/(img.2ch.net/ico/.+?)&quot;&gt;#sssp://$1#igk
# 「〜回発言」を取り除く(663さんのものをアレンジ)+ID周りの変更を反映
s#<a href="/id.*? class="id_search_btn".*?>(ID)</a>(:)<a .*?>(.*?)</a>(.*?)\[.*?\]#$1$2$3$4#igk
# ニコ動やyoutubeのサムネイル削除
s#<div class='video.*?><div.*?><div.*?></div></div><img .*?></div>##igk
s#<(iframe|img class).+?<br/>##g;
# <br/>タグに対応してない専ブラへの対応
s#<br/>#<br>#igk

変換結果式:
$2<>$3<>$4<> $5 <>

正規表現:
m#<div id="(\d+)".*?<span class="n?em"><b>(.+?)</b></span>\[(.*?)\].*?:(.*?)<div class="comment"> (.*?)</div>#imk

774名無しさん:2013/06/11(火) 20:19:37
対応ありがとうございます
無事変換できました

775 ◆/vmukiyuzw:2013/06/20(木) 20:09:20
つい最近気づいたんですが、ログ速のログには若干の問題があります。
2chの元のスレ中に2ch内のスレへのURLリンクが書かれていると、ログ速側に取り込む際に
勝手にログ速内のログへのURLリンクに変換してしまう、というものです。
これは前からそうなのかどこかの時点で仕様変更されたのかはちょっと把握してませんが・・・

具体的には、元のスレ中に例えば以下のようなURLリンク

http://toro.2ch.net/test/read.cgi/tech/1362913813/

が書かれてあったとすると、ログ速側に取り込まれると

http://www.logsoku.com/r/tech/1362913813/

に変換されてしまいます。
(その昔、今はなき「にくちゃんねる」が同じようなことをしてたと記憶してます)

これをhtmltodatで処理する場合、前処理等で元のURLリンクに逆変換したいところなのですが
困ったことにサーバに関する情報(この例では「toro.2ch.net」)が失われてしまっています。
単純に元の2chへのリンクに戻してやることはできないのです。

何か逃げ手はないかと考えてはいるのですが汎用的ですっきりしたものはなかなか難しそうです。
(そもそも人によっては特に問題視されない場合もあるかもしれませんし)
当面ログ速については上のような事象があるのでご注意ください、位しか言えない感じです。

776 ◆/vmukiyuzw:2013/06/21(金) 22:02:20
それはともかく、またログ速が微妙に仕様変更されてるようで。
ID周りが微妙に変更されたようです。以下のようなのでいけると思います。


URLの変換:
s#http://(.+?)/test/read\.cgi/(.+?)/(\d+)/?.*#http://logsoku.com/thread/$1/$2/$3/#

前処理:
# スレタイ補正
s#(<title>)(.*?) \| \S*?(</title>)#$1$2$3#ik
# ガラガラ除去はVer0.9.0以降不要になったので削除
# ニュー速等のアイコンを2ch形式に補正(663さんのものをアレンジ)
s#<img src="http://cdn.logsoku.com/(img.2ch.net/ico/.+?)&quot;&gt;#sssp://$1#igk
# 「〜回発言」を取り除く(663さんのものをアレンジ)+ID周りの変更を反映
s#<a href="/id.*? class="id_.*?>(ID)</a>(:)<a .*?>(.*?)</a>(.*?)\[.*?\]#$1$2$3$4#igk
# ニコ動やyoutubeのサムネイル削除
s#<div class='video.*?><div.*?><div.*?></div></div><img .*?></div>##igk
s#<(iframe|img class).+?<br/>##g;
# ログ速内へのURLリンクの強引な逆変換・・・Jane系でしか使えないと思われるのでとりあえずコメントアウト
#s#http://www\.logsoku\.com/r/(.*?)/(\d+)/#http://dummy.2ch.net/test/read.cgi/$1/$2/#ig
# <br/>タグに対応してない専ブラへの対応
s#<br/>#<br>#igk

変換結果式:
$2<>$3<>$4<> $5 <>

正規表現:
m#<div id="(\d+)".*?<span class="n?em"><b>(.+?)</b></span>\[(.*?)\].*?:(.*?)<div class="comment"> (.*?)</div>#imk

777 ◆/vmukiyuzw:2013/06/26(水) 19:23:16
ここで書いたことが影響したとも思えないのですが
ログ速で >>775 のような変換はしないように仕様変更されてるようです。

(<a href=〜での参照先はログ速内リンクになっているが
URLの書き込み自体の変換はされていない)

htmltodatとしては、考慮しないといけない厄介な事象がなくなって
良かったと言えると思います。

# (オリジナルのdatに近づけるため)変換オプションの「アンカー削除」を
# あえてオフにしているという方もいらっしゃるようですが、そういう方は
# ちょっと気をつけないといけないかもしれません。

778名無しさん:2013/06/30(日) 20:22:44
無事変換できました
ありがとうございます

779名無しさん:2013/07/24(水) 01:00:03
ログ速が仕様変更したかもしれません
変換ができなくなってた

780 ◆/vmukiyuzw:2013/07/24(水) 20:06:09
>>779さん
また微妙に変更されてるようです。
(要素間の半角スペースの数が変わったとかそんなレベルの変更)
# logsokuさんのツイート見てると、htmltodatからは意識しない部分も
# 結構こまめにいろいろ弄られてるようですが

以下のようなのでいけると思います。
(今回特に変更されてない部分についても今後を考え多少予防線を張ってみた)


URLの変換:
s#http://(.+?)/test/read\.cgi/(.+?)/(\d+)/?.*#http://logsoku.com/thread/$1/$2/$3/#

前処理:
# スレタイ補正
s#(<title>)(.*?) \| \S*?(</title>)#$1$2$3#ik
# ニュー速等のアイコンを2ch形式に補正(663さんのものをアレンジ)
s#<img src="http://cdn.logsoku.com/(img.2ch.net/ico/.+?)&quot;&gt;#sssp://$1#igk
# 「〜回発言」を取り除く(663さんのものをアレンジ)+ID周りの変更を反映
s#<a href="/id.*? class="id_.*?>(ID)</a>(:)<a .*?>(.*?)</a>(.*?)\[.*?\]#$1$2$3$4#igk
# ニコ動やyoutubeのサムネイル削除
s#<div class='video.*?><div.*?><div.*?></div></div><img .*?></div>##igk
s#<(iframe|img class).+?<br/>##g;
# <br/>タグに対応してない専ブラへの対応
s#<br/>#<br>#igk

変換結果式:
$2<>$3<>$4<>$5<>

正規表現:
m#<div id="(\d+)".*?<span class="n?em">.*?<b>(.+?)</b> *</span>.*?\[(.*?)\].*?:(.*?) *<div class="comment">(.*?)</div>#imk

781名無しさん:2013/07/25(木) 20:53:51
無事変換できました
忙しい中の対応ありがとうございます

782 ◆/vmukiyuzw:2013/08/03(土) 14:18:40
またまたログ速に関してなのですが。

youtubeのサムネイル埋め込みまわりの仕様が多少変更されたらしく、
今までの記述では前処理でフリーズしてしまうケースが見つかりました。

とりあえず、以下のようなので当面大丈夫だと思います。


URLの変換:
s#http://(.+?)/test/read\.cgi/(.+?)/(\d+)/?.*#http://logsoku.com/thread/$1/$2/$3/#

前処理:
# スレタイ補正
s#(<title>)(.*?) \| \S*?(</title>)#$1$2$3#ik
# ニュー速等のアイコンを2ch形式に補正(663さんのものをアレンジ)
s#<img src="http://cdn.logsoku.com/(img.2ch.net/ico/.+?)&quot;&gt;#sssp://$1#igk
# 「〜回発言」を取り除く(663さんのものをアレンジ)+ID周りの変更を反映
s#<a href="/id.*? class="id_.*?>(ID)</a>(:)<a .*?>(.*?)</a>(.*?)\[.*?\]#$1$2$3$4#igk
# ニコ動やyoutubeのサムネイル削除
s#<div class='video.*?>.*?<img .*?></div>##igk
s#<(iframe|img class).+?<br/>##g;
# <br/>タグに対応してない専ブラへの対応
s#<br/>#<br>#igk

変換結果式:
$2<>$3<>$4<>$5<>

正規表現:
m#<div id="(\d+)".*?<span class="n?em">.*?<b>(.+?)</b></span>.*?\[(.*?)\].*?:(.*?) *<div class="comment">(.*?)</div>#imk

783名無しさん:2013/08/03(土) 14:31:37
おっつおっつ

784 ◆/vmukiyuzw:2013/08/08(木) 23:06:35
バージョンアップしました(0.11.0)
 ・あまり使わないと思われるコントロールを削除(ダブルクリックで復活可能)。
 ・パラメータファイルで「コメント:」を使えるようにした。
 ・その他制御の漏れ等を微修正。


前に某所で操作がごちゃごちゃしてるという意見が出ていて、自分でもちょっと思っていたので
使用頻度が少なそうな機能を削ってみました。見た目がかなりすっきりしたと思います^^;
もっとも、削ったものを使ってる方もいらっしゃるでしょうから、画面のどこか何もないところを
ダブルクリックすると削除したものが復活します。(再度ダブルクリックでまた消える)
まあどれだけ意味あるか分かりませんが気まぐれにやってみました。


あと、prmファイルの内容にコメント(何の理由で修正したとかの記述等)を入れたいと思っていたので
(今まででも前処理の一部とかに無理やり入れることはできたのですが)独立で入れられるように
してみました。まあ大層な話ではなくてprmファイル中に

コメント:

と書くとそれ以降何行でも(空行が挟まってはダメ)コメントが書けて保持できるというだけのものです。
(今までは対応するフィールドを持っていなかったので保持できなかった)
一応ファイルの先頭に書くことを想定してます。複数箇所に分けての記述はできません。
これもかなり自己満足の機能ですがとりあえず。

785 ◆/vmukiyuzw:2013/08/20(火) 22:29:03
バージョンアップしました(0.11.1)
 ・変換オプションに「プレビューを表示しない」を追加。
  これを指定すると画面右側のプレビュー欄が表示されなくなるが
  変換速度は速くなる。

これはまあ「必要なさそうなものは削ろう」第二段と言えるのかな?
プレビュー欄を必要としてる人がどれだけいるだろうという試みです。
変換速度は明らかに速くなったので、スクリプト等から使っておられる
方にはかなり良くなったんじゃないかな?

# 本当のことを言うと、プレビュー欄を表示しなくなるよりも
# 「dat変換結果」の下の「読込行:〜なんたらの部分の表示を削るほうが
# 速度的にははるかに効果があったのです・・・
# 今後何か変更する際には考慮しないといけないな

786名無しさん:2013/08/28(水) 17:21:19
この設定で「1行が長すぎるか正規表現が正しくないようです」と表示され動かないのですがログ速は仕様変更などしたのでしょうか?
http://ideone.com/sT6hZ6

787 ◆/vmukiyuzw:2013/08/28(水) 19:14:39
>>786さん
貼っていただいたコードを確認しましたが、正直言って
結構情報が古いです。
このスレで言うと>>761-763 あたり、大体3ヶ月くらい前の状況でしょうか。

このスレを「ログ速」というワードで検索して頂くといいのですが
それ以降もログ速の仕様変更は何度かあり、とりあえず正規表現等の記述の
現状の最新は>>782です。

また、htmltodat本体のバージョンアップも行われているのでご注意ください。
(最新の更新は>>785
現状どのバージョンを使われてるかにもよりますが、正規表現等の記述では
最新バージョンでの使用を前提としている場合があります。
特に、nkf32.dll と bregexp.dll の2つのdllについては最新であるかどうか
確認したほうがいいかもしれません。

788名無しさん:2013/08/28(水) 21:34:59
すいません、ありがとうございます。
htmltodatでlogsokuのログを正常にログ変換できました。

789 ◆/vmukiyuzw:2013/08/28(水) 22:46:06
せっかくなのでこういうのを貼っといてみよう


コメント:
ログ速変換用-20130828
「プレビューを表示しない」をONにして高速化してみたバージョン

URLの変換:
s#http://(.+?)/test/read\.cgi/(.+?)/(\d+)/?.*#http://logsoku.com/thread/$1/$2/$3/#

前処理:
# スレタイ補正
s#(<title>)(.*?) \| \S*?(</title>)#$1$2$3#ik
# ニュー速等のアイコンを2ch形式に補正(663さんのものをアレンジ)
s#<img src="http://cdn.logsoku.com/(img.2ch.net/ico/.+?)&quot;&gt;#sssp://$1#igk
# 「〜回発言」を取り除く(663さんのものをアレンジ)+ID周りの変更を反映
s#<a href="/id.*? class="id_.*?>(ID)</a>(:)<a .*?>(.*?)</a>(.*?)\[.*?\]#$1$2$3$4#igk
# ニコ動やyoutubeのサムネイル削除
s#<div class='video.*?>.*?<img .*?></div>##igk
s#<(iframe|img class).+?<br/>##g;
# <br/>タグに対応してない専ブラへの対応
s#<br/>#<br>#igk

プレビューを表示しない:
true

変換結果式:
$2<>$3<>$4<>$5<>

正規表現:
m#<div id="(\d+)".*?<span class="n?em">.*?<b>(.+?)</b></span>.*?\[(.*?)\].*?:(.*?) *<div class="comment">(.*?)</div>#imk

790 ◆/vmukiyuzw:2013/10/12(土) 21:24:18
offlaw2から過去ログを取得するのを考えてみました。
まあこれはhtmltodat使う必要性自体あまりないかもですが何かの参考に。
(「URLの変換」のとこを弄ればみみずんやunkarにも使える)


コメント:
# offlaw2経由でdatを取得してみる試み

URLの変換:
s#http://(.+?)/test/read\.cgi/(.+?)/(\d+)/?.*#http://$1/test/offlaw2.so?shiro=kuma&bbs=$2&key=$3#

前処理:
s#^(.*?<>.*?<>.*?<>.*?<>)(.*?)\n#<title>$2</title>\n$1\n#ik

プレビューを表示しない:
true

変換結果式:
$2<>$3<>$4<>$5<>

正規表現:
m#()(.*?)<>(.*?)<>(.*?)<>(.*?)<>#mik

791 ◆/vmukiyuzw:2013/11/07(木) 21:22:58
現在 htmltodat で利用している bregexp.dll は bregonig.dll をリネームして使っているもので
バージョンでいうと 1.50(perl 5.8 互換)のものを利用しています。
bregonig 自体はこれより上のバージョンのものも公開されているのですが、
・Unicode 対応のものとなっており、Shift-jis しか対応してない(UTF-8も読めるが内部的に
 Shift-jis に変換してから処理している)htmltodat ではあまり意味ないかなと思った
・htmltodat ごときでそんな高等な正規表現機能が必要だろうかと思った
・dll自体のサイズが相当大きくなってしまうので同封して配布するにはちょっとためらいがあった
という点であえて最新でないバージョンを採用しています。

ですが、bregonig や perl のドキュメントを読んだり実際動かして試したりしてると
正規表現のより新しい機能を使いたい場合もあるんじゃないかと思うようになってきました。

当面のところこのスレでは上記のバージョン 1.50 前提でサポートしたいと考えますが
もっと新しい機能も使ってみたいという方は
http://homepage3.nifty.com/k-takata/mysoft/bregonig.html
から、より新しいバージョンの物をダウンロードして使ってみてください。
(このサイトに書かれてるドキュメント自体も非常に参考になります。
バージョン毎の機能の違いも記述があります)
現状の最新はバージョン 3.05(perl 5.14 互換)のようです。

792 ◆/vmukiyuzw:2013/11/10(日) 22:35:54
バージョンアップしました(0.11.2)
 ・「変換オプション」-「dat変換をしない(前処理のみ行う)」をONにした場合、
  前処理の結果を「dat変換結果」欄に表示するようにした。
  (もちろんそれをそのまま保存することも可能)
 ・「正規表現」欄内で改行ができるようにし、それをprmファイルに保存・読み出し
  できるようにした。

これらはプログラムの変更としては全然大した話ではないんですが、
使い勝手としてはかなり影響がある可能性があります。

まず1点目から。
>>790のようなのを書いてみて思ったのが、
もともとのソースがdat形式もしくはそれに近い形式のものは
無理やり htmltodat の変換メイン処理を通さなくても
そのまま単純に保存できたほうがいいケースもあるんじゃないかと。
今までも前処理中でwコマンドというのを使って保存することはできたのですが
元々デバッグ用というかイレギュラーな使い方ですしスクリプト等から使うことも難しいので
もっと普通に保存できるルートを付けてみた、というところです。

この機能は前処理のデバッグをするのにも結構役立つんです。
以前、某所で
「前処理の結果をwコマンドでいちいちテキストエディタで確認するのは面倒。
簡易的に表示できないか」
とのリクエストを受けた事があったんですが、
めぐりめぐってそれがやっと実現しました(遅すぎ^^;)
# 現在自分では bregonig.dll の機能の細かい確認のために使ったりもしてます

さて、2点目についてはちょっと長くなるんで次レス以降で。

793 ◆/vmukiyuzw:2013/11/10(日) 22:49:25
>>792続き)

正規表現が長くなったり複雑になった場合に、
途中で改行やコメントを入れられたら読みやすくなるのにと思ったことがありました。

v0.9.0から正式採用した bregonig.dll
(htmltodat では互換性のため「bregexp.dll」にリネームして利用している)では
perl互換の「拡張正規表現」というものがサポートされていて
オプションに「x」を足すと、正規表現の途中に任意の改行や、
インデント等の為のスペースを入れることができるようになっています。
具体例としては以下のような感じ。
(ログ速の正規表現での例です。>>789での正規表現の記述と意味的には同じなので
見比べてみてください)

正規表現:
m`
(?# レス番号) <div\ id="(\d+)".*?
(?# 名前) <span\ class="n?em">.*?<b>(.+?)</b></span>.*?
(?# メール欄) \[(.*?)\].*?
(?# 投稿日・ID) :(.*?)\s*
(?# レス内容) <div\ class="comment">(.*?)</div>
`imkx

こんな書き方ができるようになったりします。
この例では正規表現の最後、`imkx の「x」が拡張正規表現オプションです。
拡張正規表現オプションを指定しないと途中改行等は使えないことにご注意ください。
(正規表現の可読性や保守性を上げるために役立つと思うのですが、
上の例自体はその目的に実際に合ってるのかはわかりません^^;今後の研究課題です)

この例のような書き方は bregonig.dll 自体でサポートされてるものなので
今回のバージョンアップをしなくても「正規表現」欄に記述して動作させる事はできます。
ただ今まではこのような途中改行された正規表現をprmファイルに保存・読み出しする事ができなかったので
実用上あまり意味がありませんでした。
それをできるようにしたのが今回のバージョンアップです。

この機能を利用する際には、いくつか考慮しないといけない事項があります。
やや長くなるので次レス以降で説明します。

794 ◆/vmukiyuzw:2013/11/10(日) 23:12:44
>>793続き)

1.コメント問題

拡張正規表現では「(?#・・・)」の形式でコメントを入れる事ができます(>>793の例参照)。
実は、拡張正規表現でなくてもこの形式でコメントを入れる事はできるのですが、
改行の無い一行の正規表現中にコメントを入れても逆に可読性を損ねるのではないかと考えます。
途中改行が可能な拡張正規表現でこそ意味があると思います。

ところで、今まで htmltodat では正規表現のデリミタに慣習的に「#」を使っていました。
(「m#〜#〜」みたいな形式で)
一般的にはperl形式相当の正規表現ではデリミタには「/」が使われる事が多いと思うのですが
htmltodat では検索の対象がhtmlテキストということで
(かつ、htmlテキストではタグ内に「/」が多用されるのでぶつかっちゃうため)
いちいちエスケープする手間を省くため「#」を使っていたわけです。
実はデリミタ文字は対になってさえいれば何でもよいので、
「#」でなければいけないわけではありません。
(「#」を使っていたのは、あまりhtml中には登場しないだろうというのと、
あとは個人的な好みです)

ところが、「(?#・・・)」の形式でコメントを入れる場合、この「#」とぶつかってしまいます。
ではデリミタの方を変えるのがよさそうです。
前レスの例では「#」の代わりに「`」(バッククォート)を使ってみました。
(「`」は正規表現上でもhtml上でも他とぶつかる可能性が少なくてよさげなので
今後使っていきたいと思います)

あと、本家perlでは拡張正規表現の改行した途中の各行の後や行間に
「#・・・」形式のコメントが使えるのですが、bregonig.dll でも
この形式のコメントも使えるようです。
(これは bregonig のドキュメントには明記されていないようなのですが
実際試してみると使える)
こっちのほうが読みやすいという人もいるでしょう。
以下の例は、実際には半角スペースで「#」の位置を揃えてるんですが、
この掲示板での書き込みでは連続した半角スペースは省略されるので
不ぞろいになって見えると思います。
(この省略がなければ個人的にはこちらの方式を推したい気もするのですが)

正規表現:
m`
<div\ id="(\d+)".*? # レス番号
<span\ class="n?em">.*?<b>(.+?)</b></span>.*? # 名前
\[(.*?)\].*? # メール欄
:(.*?)\s* # 投稿日・ID
<div\ class="comment">(.*?)</div> # レス内容
`imkx

(次レスに続く)

795 ◆/vmukiyuzw:2013/11/10(日) 23:28:43
>>794続き)

2.半角スペース問題

今まで htmltodat の正規表現を記述する際には「<span class=・・・」みたいな書き方を
無造作にしていたと思うのですが、拡張正規表現を使う場合には
半角スペースは無視されてしまいます。
(インデントのためやコメントのための半角スペースを許す必要があるので)

上の例だと「<span」と「class」の間の半角スペースが無視されるため
そのままでは正しくマッチしなくなります。
半角スペースにマッチさせたい場合は「\s」等で代替する必要があります。
(「<span class=・・・」は「<span\sclass=・・・」等にする必要がある)

半角スペースを「\」でエスケープする「<span\ class・・・」みたいな形式も
許されるので、こちらのほうがまだ読みやすいかもしれません。
>>793での例はこちらを使いました)


3.regexps.txt問題

これは互換性の問題としてやや重要な話です。

途中改行を許す拡張正規表現の形式は、
従来から htmltodat において正規表現の一覧を管理していた regexps.txt ファイルには
保存・読み出しする事ができません。

regexps.txt はもともと一行に一つの正規表現を保存する事を前提として設計していた機能なので
ここを変えるのはちょっと難しかったのです。
(というか正直には、言語のライブラリにあるiniファイル管理機能をそのまま使ってただけなので
拡張しようにも手が出せないってとこです)

prmファイルの形式であれば(改行あり前提の機能なので)もちろん保存できますし、
現状ではprmファイルでの管理のほうがいろいろと便利だと思われますので、
今後はこちらでの利用を推していきたいということでここの互換性の問題には目をつぶることにしました。
でもまあ、最初 htmltodat を使い始められる際には正規表現一覧から入られる場合も多いでしょうから
(readme に自分で「正規表現一覧から使え」って書いちゃってますしね^^;)
何らかの考慮が必要かなとは思っています。

(次レスに続く)

796 ◆/vmukiyuzw:2013/11/10(日) 23:36:17
>>795続き)

当面の問題として、ユーザーの方が皆即座にバージョンアップしてくれるわけではないでしょうから
このスレで記述する正規表現等は旧バージョン準拠のものにすると思います。
ただ、前記「コメント問題」の考慮としてデリミタ文字には「`」を使ったり、
「半角スペース問題」の考慮として裸の半角スペースは使わず\s等で代用したりは
していきたいかなと思ってます。
で、まあちょっとずつ新バージョン対応のものも出していきたいかなと。


あと一点、さほど重要ではないかもしれませんが補足があります。
「正規表現」欄の m〜 形式の正規表現は「x」オプションにより途中改行ができるようになりましたが
「前処理」「後処理」等で指定する s〜 形式の正規表現は「x」オプションを使っても
途中改行は現状できません。

これは処理の都合なのですが、「正規表現」欄の正規表現はそのまま bregexp.dll に丸投げしているのに対し、
「前処理」等の正規表現は一行ごとに htmltodat 側で解析してから bregexp.dll に投げる方式になっており
この解析の方式を変えないと途中改行のある正規表現は使うことができないのです。
「前処理」等の場合はもともと一行ずつ複数の正規表現が順番に指定される事を想定しており、
一つの正規表現が途中で改行する事を想定して作っていないということです。
この仕様は今後改良する可能性はありますが、現時点ではあまり必要性は感じていないというところです。
(現状でも行間にコメントを入れるのは可能なので)

# 全然大したことないバージョンアップの説明に5レスも要してしまった・・・
# 自分の文章力の無さを嘆いています

797 ◆/vmukiyuzw:2013/11/17(日) 23:20:34
v0.10.0(>>743)以降の、prmファイル読み書き機能サポート以降
htmltodatの基本的な使い方が従来とは違う面が出てきていると思うのですが
まだちゃんと説明していなかったと思うのでここで一度説明しておきます。

例えば、(まあ最近ではログ速の例が多いのですが)
「サイトの仕様変更があった?」とか「ここのログを変換するには?」とかの質問があった場合
大体回答として>>789のようなレスが返されます。
まずこのレスをコピーしてください。
(レス全体でもいいが「コメント:」と書かれた行以降だけでもOK)

次にhtmltodatを起動し、下のほうにある「prmファイル(R)...」ボタンを押します。
「prmファイルの読み書き」というウィンドウが開きますので、
「prmファイルの内容」という欄上で右クリ「すべて選択」またはcntl+Aで全選択し
先ほどコピーした内容を貼り付けます。
貼り付けたら「適用(A)」ボタンを押します。
これで正規表現・変換オプション等の項目が一度に設定されます。
従来、一項目ずつ入力していたものがこれでかなり楽になると思います。

貼り付けた内容をファイルに保存するには「保存(S)...」ボタンを押します。
ダイアログが出るので適当な場所に適当な名前(例えば「ログ速.prm」)で保存します。
次回から使うときはこのウィンドウを開いてから「読込(L)...」ボタンで読み込めます。
(ファイルから読み込んだときは「適用(A)」ボタンは不要)

後は変換したいログのURLを入力して「HTML取得(G)」ボタンを押します。
「取得即変換」がONになっているはずなのでdat変換まで行います。
あとは従来どおり「dat保存(S)...」ボタンを押して保存します。

以前の基本的な使い方ではまずHTMLを取得してから正規表現を選んで・・・
みたいな手順だったと思うのですが、prmファイルの形式でパラメータが
指定されている場合、まずそれを指定してからHTMLを取得する、というのが
現在の仕様上では便利だと思われます。

798 ◆/vmukiyuzw:2013/12/10(火) 19:23:57
予告されてたことですがしたらば掲示板のドメインが変更されました。
旧:jbbs.livedoor.jp
新:jbbs.shitaraba.net

htmltodatとして対応することは特にないのですが
http://mukiyu.g.ribbon.to/
からこの板にリンクをはってたんで、そこだけ修正しました。

799 ◆/vmukiyuzw:2014/03/08(土) 18:42:55
状況が流動的なので現状を正確に把握できてるかわからないのですが。

2chの過去ログがdat落ちしたものであってもhtmlでは取得できるようになっているようです。
かなり過去のものはofflaw2でもdatが読めませんが通常のブラウザではhtmlで読めたりします。
であればhtmltodatにも出番があるのでは・・・
正規表現「read.cgi7.00?」で変換はできるんで以下にprmファイルバージョンを。


コメント:
2chのログでhtml化されているがdatに残っていないものを変換。
元datに近づけるためアンカー削除はオフに

アンカー削除:
false

正規表現:
m#<dt.*?>([0-9]+).+?(?:"mailto:(.+?)">)?<b>(.+?)</b>(?:</font>|</a>) ?:(.*?)<dd>(.*?)<br><br>(<dt.*?>|</dl>)#mi

800 ◆/vmukiyuzw:2014/04/05(土) 22:45:33
バージョンアップしました(0.11.3)
 ・表示の不具合を微修正

今回は、プログラムのコード自体は一切弄っていません。
メインのPC環境がWindows8.1に移行したので、そちらで動作確認していたところ
一部の機能で表示に若干の不具合が出たためそれを修正しました。
(ウィンドウの枠サイズを修正した程度)

また、今回から開発環境自体をWindows8.1上に移行しています。
開発ツールは今までと同じなので基本的にexeの互換性は問題ないはずなのですが
何かありましたらご報告を。(一応XPでも動作確認はしています)

801 ◆/vmukiyuzw:2014/04/26(土) 21:21:17
>>799 を若干修正。
URLの変換を追加。
2chの過去ログ(html)から取得するのだからURL変換は必要ないかと最初思っていたのですが、
専ブラの外部コマンド等から呼び出す場合、
引数のURLに意図した以外の形式のものが渡ってくる可能性があると分かったので、
無駄な情報が渡らないよう変換プロセスを通したほうがいいと考えました。


コメント:
2chのログでhtml化されているがdatに残っていないものを変換。
元datに近づけるためアンカー削除はオフに

URLの変換:
s#http://(.+?)/test/read\.cgi/(.+?)/(\d+)/?.*#http://$1/test/read.cgi/$2/$3/#

アンカー削除:
false

正規表現:
m#<dt.*?>([0-9]+).+?(?:"mailto:(.+?)">)?<b>(.+?)</b>(?:</font>|</a>) ?:(.*?)<dd>(.*?)<br><br>(<dt.*?>|</dl>)#mi

802名無しさん:2014/10/01(水) 12:53:49
◆/vmukiyuzwさんへ報告ですが
htmltodat0.9.0以降、Windows2000sp4で起動した場合、GUIがこの様↓になってしまっています
(GUI下部の機能が非表示、外周のウィンドウ自体を広げたり狭めても表示されず)
http://light.dotup.org/uploda/light.dotup.org79528.jpg

それと13/11/26(火) 19:05:15「・ート後処理.prm」は正常なファイルなのでしょうか?
このファイルのみ破損しており解凍できません
よろしくお願い致します

803 ◆/vmukiyuzw:2014/10/01(水) 19:25:48
>>802さん
> (GUI下部の機能が非表示、外周のウィンドウ自体を広げたり狭めても表示されず)

バージョン0.11.0から、使用頻度の少ないと思われる機能を非表示にしました。
画面のどこか何もないところ(プレビュー欄の右上など)を
ダブルクリックすると表示されるようになります。
>>784参照。

> このファイルのみ破損しており解凍できません

圧縮時に破損してしまったようです。失礼しました。
圧縮しなおして差し替えました。

804 ◆/vmukiyuzw:2014/10/01(水) 20:22:28
> それと13/11/26(火) 19:05:15「・ート後処理.prm」は正常なファイルなのでしょうか?

まあ、そのファイル(正しい名前は「ソート後処理.prm」)は
http://jbbs.shitaraba.net/bbs/read.cgi/computer/1929/1038409548/165-
で実験して遊んでた時にできた派生物が紛れ込んじゃっただけなので
無視してもらっても構わないと思います。

805名無しさん:2014/10/01(水) 20:42:17
ダブルクリックの件はreadme.txtのわかりやすい所に書いといて欲しかったです(一括変換は割とよく使う為)
ソート後処理.prmは問題無く解凍できるようになりました
ありがとうございました

806 ◆/vmukiyuzw:2014/10/01(水) 21:02:38
>>805
意外でしたが一括変換にはまだニーズがあるんですね。
次のバージョンアップでは復活を検討します。

807 ◆/vmukiyuzw:2014/10/19(日) 20:13:28
http://jbbs.shitaraba.net/bbs/read.cgi/computer/1929/1038409548/198,206

↑で実験しているのは、Fiddlerっていうツールを使って
ローカルプロキシ経由でのhtmltodat的処理を試しているものですが
htmltodatの「read.cgi7.00?」の正規表現をベースにスクリプト化したものを
使っています。
で、このスクリプトを弄っているうちに、read.cgiからのhtmlを
生datとほぼ一致するdatに変換できるようになりました。
ので、その成果(というほどのものでもないか)をこちらにもフィードバックしておきます。
>>799,801 への修正という形になります。


コメント:
# 2chのログでhtml化されているがdatに残っていないものを変換。
# 元datに近づけるためアンカー削除はオフにし
# 後処理で不要なもののみ削除する。

URLの変換:
s#http://(.+?)/test/read\.cgi/(.+?)/(\d+)/?.*#http://$1/test/read.cgi/$2/$3/#

アンカー削除:
false

プレビューを表示しない:
true

後処理:
# アンカータグ削除(レスアンカーに対するタグは削除しない)
s#<a href="http.*?>(.*?)</a>#$1#igk
# BE周りの処置
s#<img src="http://(img\.2ch\.net/.+?)">#sssp://$1#igk
# 以下はhtmltodatの内部処理に組み込まれているので不要
#s#<a href=.?javascript:be\((\d+)(?:,\d+)?\).*?>\?(.*?)</a>#BE:$1-$2#igk

正規表現:
m#<dt.*?>([0-9]+).+?(?:"mailto:(.+?)">)?<b>(.+?)</b>(?:</font>|</a>) ?:(.*?)<dd>(.*?)<br><br>(<dt.*?>|</dl>)#mi

808名無しさん:2014/12/13(土) 03:49:50
ttp://geass2chlog2.web.fc2.com/main/1149586971.html
上のようなページをdat化するにはどうしたらよいのでしょうか
よろしければ教えてください

809名無しさん:2014/12/13(土) 04:12:31
>>808
そのページの先頭にある『元のスレッド』の文字列上を右クリしてリンクをコピー
http://anime.2ch.net/test/read.cgi/anime3/1149586971/
これをhtmltodatに投げればおk

専ブラで過去ログ取得の設定がしてあればそのままのリンクをアドレスバーに貼り付けるだけでも可なんだけど
もしかするとボードデータの更新を怠っていたり板一覧取得先のURLが死んでたりすると
http://hayabusa6.2ch.net/test/read.cgi/anime3/1149586971/
という現行鯖のリンクに切り替わらないのでそんな時もhtmltodatがあれば大丈夫

810名無しさん:2014/12/13(土) 05:39:10
あ、ごめん
完全補完ということなら2ch過去ログパラメータじゃ無理だわ

811808:2014/12/13(土) 17:56:11
2005年6月頃から2007年1月頃までの間のアニメ板のログが全て見れない状態なんですよね
なのでこの間のログは「みみずん」や「2ちゃんねるの国」等のミラーサイトから取得しているのですが全て揃っているわけでもなく…
ttp://geass2chlog2.web.fc2.com/main/index000.htmlのように2chに似た形でログを残してくれているサイトもいくつか存在しているので
これらをうまくdatに変換できないかと思い質問しました

812 ◆/vmukiyuzw:2014/12/13(土) 19:38:10
>>808さん
そのサイトについては以下のようなのでいけると思います。
一応prmファイルの形式で書いてますが、前処理等はいらなさそうなので
従来の使い方(正規表現一覧に登録して使用)のほうが楽かもしれません。
その場合コメントは無視してください。


コメント:
# アニメ板過去ログ保存サイトgeass2chlog2.web.fc2.comの変換用
# 正規表現は「read.cgi7.00?」を修正したもので上位互換性あり

正規表現:
m#<dt.*?>\s*([0-9]+).+?(?:"mailto:(.+?)">)?<b>(.+?)</b>(?:</font>|</a>)*\s?:(.*?)<dd>(.*?)<br><br>(<dt.*?>|</dl>|<script)#mi

813名無しさん:2014/12/13(土) 20:42:35
>>812
無事変換できました
ありがとうございました

814 ◆/vmukiyuzw:2014/12/13(土) 23:00:10
>>809さん
多分、htmltodat-convert2をお使いでテストスレのほうに投稿くださった方ですよね?

> http://anime.2ch.net/test/read.cgi/anime3/1149586971/

このスレはうちの環境からはhtmltodat-convert2で>>807相当のprmファイルを使っても読めなかったです。
汎用ブラウザで開こうとしても「 あなたは間違った道を歩んでいます誠に申し訳ございません。 」
のエラーメッセージが返されます。

現状2ch.netではdatでは読めない過去ログでもread.cgi叩けば大抵読めるようですが
それでもやはり取れないログはあるようです。
一時期サーバが物理的に死亡して外部サイトからログを募集してたこととかありましたね。
あの辺のログは2ch.netのサーバには存在してないのかもしれませんね。

815名無しさん:2014/12/14(日) 00:13:52
>>814
件のスレは908レスまで取得できたんだけど何が違うんだろう

816 ◆/vmukiyuzw:2014/12/14(日) 00:50:38
>>815
>>808のログには1001レスまであるので、もしread.cgiから取得できるのであれば
こちらも1001レスないとおかしいですよね。
調べたらみみずんから取得できるログは908レスまでのようです。
Getlogコマンドとの併用辺りでどこかで勘違いがあるのでは。

817名無しさん:2014/12/14(日) 03:54:00
みみずん←ソレダ!!
Xeno本体内蔵のみみずん機能の切り忘れでした大変申し訳ない

818 ◆/vmukiyuzw:2014/12/27(土) 20:56:26
したらばの過去ログの取得方法が変更されたということなので
(旧URL:http://jbbs.shitaraba.net/カテゴリ/板番号/storage/スレッド番号.html
 新URL:http://jbbs.shitaraba.net/bbs/read_archive.cgi/カテゴリ/板番号/スレッド番号/ )

htmltodatで変換できるか確認してみたのですが、htmlの形式に変更はないようで
従来の正規表現「jbbs過去ログ」で変換可能なようです。

せっかくなんでこの際prmファイル化も考えておこうかなと思ったんですが
実はあんまりやる事がない・・・
旧URLから新URLへ飛ばすために「URLの変換」を指定するのかなと思ったんですが、
これはしたらば側でリダイレクトで飛ばしてくれるようなので
(でhtmltodatはリダイレクトを追尾するようになってるので)
当面これも指定する必要がなさそうなんです。
で、prmファイルをあえて作るなら以下の一行のみでOK。


正規表現=jbbs過去ログ

819 ◆/vmukiyuzw:2015/01/18(日) 22:59:05
2ch.netのread.cgiが返すhtmlの形式が微妙に変更されているようです。
最近導入されたCloudFlareの仕様なのか設定なのか、
メール欄をエンコードして難読化する機能があり(ボット等に収集され
スパムに利用されるのを防ぐためのものらしい)、今まで

<a href="mailto:sage">

みたいな形式でメール欄が表現されていたのが

<a href="/cdn-cgi/l/email-protection#abd8caccce">

みたいになります。
(全部のレスがそうなるわけじゃなく途中から元の形式に戻ってたりするのが
いまいちよくわからんのですが)

で、エンコード部分をデコードするのにはアルゴリズムがあるので
JavaScriptとか使えば難しくはなさそうですが
正規表現だけでやろうと思うとちょっと厳しそう。
てことでhtmltodat的に考えると現状で変換するのはちょっと無理かな・・・

んで、今後どうするかですが。
現状では>>807のprmファイルで変換すると<a href="/cdn-cgi〜のタグは
無視されるだけなので単にメール欄がないレスとして扱われます。
とりあえずこの現状で勘弁してもらえるか。
htmltodatの機能として対応するとなるとなかなか面倒そう。
一番うれしいのはCloudFlareの設定変えてもらってメール欄のエンコードを
やめてもらえるといいんですがね・・・2chサイドから見ると特にメリットもデメリットも
なさそうなんで望みは薄いかなぁ。

820 ◆/vmukiyuzw:2015/01/19(月) 21:10:48
>>819に関連して
2chのread.cgiのレスポンスが変更されてるので、ミラーしてるログ速なんかにも
影響でてるんじゃないかと思って調べてみたんですが
ログ速がうまくやってるのか特に影響はなかったみたいです。

ただ、ログ速のhtml形式がいつの間にか微妙に変更されていて
今までの記述ではうまくマッチしなくなってる
(エラーになるわけではないがdat中に不要なタグが混入する)
ようなので修正してみました。
正規表現に拡張形式を使ってみたのでhtmltodatのバージョン0.11.2以上で
使ってください。


コメント:
# ログ速変換用-20150119
# ID周りの変更に対応

URLの変換:
s#http://(.+?)/test/read\.cgi/(.+?)/(\d+)/?.*#http://logsoku.com/thread/$1/$2/$3/#

前処理:
# スレタイ補正
s#(<title>)(.*?) \| \S*?(</title>)#$1$2$3#ik
# ニュー速等のアイコンを2ch形式に補正(663さんのものをアレンジ)
s#<img src="http://cdn.logsoku.com/(img.2ch.net/ico/.+?)&quot;&gt;#sssp://$1#igk
# 「〜回発言」を取り除く(663さんのものをアレンジ)+ID周りの変更を反映
s#<span class="id_color.*?>(ID)</span>(:)<span.*?>(.*?)</span>(.*?)\[.*?\]#$1$2$3$4#igk
# ニコ動やyoutubeのサムネイル削除
s#<div class='video.*?>.*?<img .*?></div>##igk
s#<(iframe|img class).+?<br/>##g;
# <br/>タグに対応してない専ブラへの対応
s#<br/>#<br>#igk

プレビューを表示しない:
false

変換結果式:
$2<>$3<>$4<>$5<>

正規表現:
m`
(?# レス番号) <div\sid="(\d+)".*?
(?# 名前) <span\sclass="n?em">.*?<b>(.+?)</b></span>.*?
(?# メール欄) \[(.*?)\].*?
(?# 投稿日・ID) :(.*?)\s*
(?# レス内容) <div\sclass="comment">(.*?)</div>
`imkx

821 ◆/vmukiyuzw:2015/01/24(土) 01:28:00
バージョンアップしました(0.11.3)
 ・2chのCloudFlare採用によるメール欄の難読化をデコードするよう修正。
 ・Ver0.11.0で削除したコントロールのうち
  「一括変換」「subject.txt作成」を復活。

一点目は>>819で書いたことに関連してなのですが
対応策をいろいろ検討した結果、htmltodat内部に
デコード処理を取り込むのが当面いいかなと考え
そのように修正しました。
それ以外のエンコードロジックが出てきたらどうするんだとか
汎用性の面で問題はあるのですが、これに汎用的に
対処しようと思うとなかなか難しい面があって・・・
まあ当面対処すべきなのは1パターンだけですし
汎用性が要求されるケースが発生したらその時考えます。

で、若干の考慮事項があるのですが次スレで。

二点目は、>>805で「一括変換は使う」という方がいらっしゃったので
確かにまだニーズはありそうだなと復活させてみました。
「subject.txt作成」は「一括変換」を使う人には必要かもと思い
一緒に復活させました。

822 ◆/vmukiyuzw:2015/01/24(土) 01:36:20
>>821の関しての考慮事項です。
(バージョン番号間違えた。0.11.4です)

この変更は、>>819に書いたように

> <a href="mailto:sage">
> みたいな形式でメール欄が表現されていたのが
> <a href="/cdn-cgi/l/email-protection#abd8caccce">
> みたいになります。

となってしまうのを、元の"mailto:sage"に戻すためのものなわけです。

ところで、エンコードされた形式の
/cdn-cgi/l/の部分をハードコードするには気持ち悪かったのと、
内部処理的に、<a href="mailto:email-protection#abd8caccce">
みたいにmailtoの内容として表現されていると処理しやすい
というのがあったんで、前処理で変換してくださいという仕様にしました。
(形式が変わっても"mailto:email-protection#〜"の形式にすれば変換可能ということ)

これを含んでのread.cgiの変換prmは以下のように。


コメント:
# 2chのread.cgiからの出力を変換-20150124
# 元datに近づけるためアンカー削除はオフにし
# 後処理で不要なもののみ削除する。
# メール欄デコード処理対応を反映

URLの変換:
s#http://(.+?)/test/read\.cgi/(.+?)/(\d+)/?.*#http://$1/test/read.cgi/$2/$3/#

前処理:
# メール欄デコードの前処理
s#(<a href=)"/cdn-cgi/l/(email-protection\#.*?">)#$1"mailto:$2#ikg

アンカー削除:
false

プレビューを表示しない:
true

後処理:
# アンカータグ削除(レスアンカーに対するタグは削除しない)
s#<a href="http.*?>(.*?)</a>#$1#igk
# BE周りの処置
s#<img src="http://(img\.2ch\.net/.+?)">#sssp://$1#igk
# 以下はhtmltodatの内部処理に組み込まれているので不要
#s#<a href=.?javascript:be\((\d+)(?:,\d+)?\).*?>\?(.*?)</a>#BE:$1-$2#igk

正規表現:
m#<dt.*?>([0-9]+).+?(?:"mailto:(.+?)">)?<b>(.+?)</b>(?:</font>|</a>) ?:(.*?)<dd>(.*?)<br><br>(<dt.*?>|</dl>)#mi

823 ◆/vmukiyuzw:2015/02/04(水) 00:46:45
バージョンアップしました(0.11.5)
 ・prmファイル作成時に、無駄な要素(デフォルトから変更していない
  チェックボックスの内容)が含まれないようにする。
 ・「HTMLソース」「dat変換結果」欄の内容をエディタで開く機能を追加。
  (それぞれの欄の右クリックから指定)

今回はまあ正規表現書いたりprmファイル作ったりする
開発サイドの人(ってほぼ私か^^;)向けの機能強化です。

一点目は、今まではprmファイルを作成しようとするときに
デフォルトから変更していないチェックボックスの情報も全部出力され
ちょっと冗長な状態になっていました。
これを、デフォルト状態から変更されていないものは出力しないよう
修正しました。
今までは実は目で見て削除していたんですがそれが多少楽になるかな
て感じです。

二点目は、これはかなり前からやりたかったことなんですが、
「HTMLソース」「dat変換結果」欄は表示するデータ量も多いので
もっと大きいウィンドウで表示したり自由に検索したりしたかったのですが
現状の機能の延長線では難しかったので、外部エディタでの表示による拡張を
することにしました。これにより正規表現等の作成が捗ることになると思います。
(現状でも私はエディタにコピペして作業することがほとんどだったので)

デフォルトでは、拡張子 .txt に関連付けられたエディタが起動します。
(関連付けを特に弄ってなければ普通はメモ帳になると思います)
好みのエディタに変更したい場合は、iniファイルで変更できるように
しました。配布ファイルにサンプルのhtmltodat.iniファイルを
同封しているので弄ってみてください。
(今のところ、エディタ側で編集してその結果を反映、とかはできません)

824 ◆/vmukiyuzw:2015/02/08(日) 12:21:57
バージョンアップしました(0.11.6)
 ・前バージョンの「エディタで開く」機能に不具合があったので修正。

今回は不具合修正のみです。
エディタによっては、htmltodatのインストールパスに空白を含む場合に
上手く起動できないケースがあったので修正しました。

自分の環境で使ってる時にはパスに空白を含まないとこで使ってるので
気づくのにちょっと時間かかりました。
今後も同様な問題は起こり得るんで気を付けないといけないですね。

825名無しさん:2015/03/15(日) 00:11:15
htmltodatByFiddler 1.03使わせてもらってます
JaneXeno 150312(Win7 64bit)で余裕で動きました
ありがとうございます

826名無しさん:2015/03/17(火) 21:25:36
htmltodatByFiddler1.03を使わせてもらってます。
質問です。
UAをMonazillaから以下に書き換えると全レス”ここ壊れてます”と出て、
レスを取得できません。
なんででしょうか?以下に書き換えてます。

(oSession.oRequest["USER-AGENT"].Contains("Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"))) //専ブラ以外からのリクエストは変換しないほうがよさそう。Monazillaを名乗らない専ブラの場合は適当に変えて下さい

827名無しさん:2015/03/17(火) 22:01:35
>>826
OnBeforeRequest内でIEのUser-Agentに書き換えた上で、OnBeofreResponseのそのif文書き換えてるんだよね?

828 ◆/vmukiyuzw:2015/03/17(火) 22:14:18
>>826さん
UAを変更したいという話なら、修正個所はそこではなく、
OnBeforeRequest のほうに次の一行を足してください。

oSession.oRequest["USER-AGENT"] = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";


お書きいただいたOnBeforeResponse のほうの判定ロジックは
現状あんまり意味ないと思うので外してくださっていいと思います。

if ((oSession.url.match(/(?:\.2ch\.net|\.bbspink\.com)\/test\/read/)) &&
(oSession.oRequest["USER-AGENT"].Contains("Monazilla"))) //専ブラ以外からのリクエストは変換しないほうがよさそう。Monazillaを名乗らない専ブラの場合は適当に変えて下さい

この2行は、以下に変更して下さい。

if (oSession.url.match(/(?:\.2ch\.net|\.bbspink\.com)\/test\/read/))

上のロジックを入れていたのは、Fiddlerがデフォルトでは汎用ブラウザのプロキシになっちゃうので
汎用ブラウザからread.cgiを見た時にdat変換されちゃうのはまずいかなと思っていたためです。
ですが、Fiddlerのオプションで「Act on system proxy startup」をオフにすれば
問題ないと分かったので、外して構わないと考えました。

829名無しさん:2015/03/17(火) 23:46:58
>>826-827
ありがとございます。
>>827に書き換えで出来ました。

830名無しさん:2015/03/17(火) 23:48:20
間違えました。
>>827-828
ありがとうございました。

>>828に書き換えで出来ました。

831名無しさん:2015/03/18(水) 19:53:36
2chブラウザ Jane Style Part117 [転載禁止](c)2ch.net
http://anago.2ch.net/test/read.cgi/software/1426520789/614

614 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2015/03/18(水) 18:50:16.69 ID:gSYCzAIq0
http://mukiyu.g.ribbon.to/
 htmltodat 0.11.6(910k byte)の中のhtmltodat.exe/bregexp.dll/ntf32.dllの3つと
http://mirrorhenkan.g.ribbon.to/jane/htmltodat-convert2/
 htmltodat-convert2_20121221 (5k byte)の中のhtmltodat-convert2.wsfをJane2ch.exeと同じフォルダに解凍する

http://jbbs.shitaraba.net/bbs/read.cgi/computer/1929/1038588508/822

コメント:
(中略)
m#<dt.*?>([0-9]+).+?(?:"mailto:(.+?)">)?<b>(.+?)</b>(?:</font>|</a>) ?:(.*?)<dd>(.*?)<br><br>(<dt.*?>|</dl>)#mi

までコピーする

htmltodat.exeを起動
左下3番目prmファイルボタン→入力欄を右クリックして貼り付ける
保存ボタン→任意の名前.prmと名づけJane2ch.exeと同じフォルダに保存する
htmltodat.exeを閉じる


command.datを開き
LINKからdat取得=wscript "$BASEPATHhtmltodat-convert2.wsf" "$LINK" "任意の名前"
入力からdat取得=wscript "$BASEPATHhtmltodat-convert2.wsf" "$INPUT" "任意の名前"
と入力して上書き保存

あとはGetLogと同じ右クリから外部コマンド使って取得
ただし差分入力には対応してないのでログが多少でもある場合は
スレurlをコピー後ログ削除→右クリ入力からdat取得でペーストして取得

832名無しさん:2015/03/18(水) 19:54:46
2chブラウザ Jane Style Part117 [転載禁止](c)2ch.net
http://anago.2ch.net/test/read.cgi/software/1426520789/622

622 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2015/03/18(水) 19:13:19.12 ID:SPOUqZL00
"$LINK"は"$LINK$URL"の方がいいよ
開いてるスレですぐ使える

2chブラウザ Jane Style Part117 [転載禁止](c)2ch.net
http://anago.2ch.net/test/read.cgi/software/1426520789/626

626 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2015/03/18(水) 19:18:13.92 ID:2NT7R8KV0
"$LINK$URL"だとgetlogと全く同じ使い方できるね
色んなパターン作っておけばいいか
後はこの閉じて開き直す手間が無くなれば完璧なんだけど厳しいか

833名無しさん:2015/03/20(金) 10:21:08
2chブラウザ Jane Style Part11(c)2ch.net (実質Part118スレ)
http://anago.2ch.net/test/read.cgi/software/1426777984/113,134,148より

・フォルダで管理する場合


Jane Style
   ┗script
     ┗htmltodat
         ┗htmltodat-convert2.wsf

・command.datに
LINKからdat取得=wscript "$BASEPATHscript\htmltodat\htmltodat-convert2.wsf" "$LINK$URL" "任意prm(拡張子書くな)"

・htmltodat-convert2.wsf修正箇所
【13行目 挿入】
var base = (new ActiveXObject("WScript.Shell")).CurrentDirectory + "\\";
(new ActiveXObject("WScript.Shell")).CurrentDirectory = cur;

【20行目 curをbaseに】
var log = GetProf("PATH", "LogBasePath", base, base + "Jane2ch.ini");

【66行目 curをbaseに】
cmd.Run("\"" + base + "Jane2ch.exe\" " + "\"" + WScript.Arguments(0) + "\"");

834名無しさん:2015/03/20(金) 10:21:52
2chブラウザ Jane Style Part11(c)2ch.net (実質Part118スレ)
http://anago.2ch.net/test/read.cgi/software/1426777984/135より

必ず1つ下のサブフォルダの固定でよければ、

1.「htmltodat」というサブフォルダを作り、
bregexp.dll,nkf32.dll,htmltodat.exe,htmltodat-convert2.wsf,任意の名前.prm
の5ファイルを移動

2.htmltodat-convert2.wsfを2行修正する
20行目
var log = GetProf("PATH", "LogBasePath", cur, cur + "Jane2ch.ini");
 ↓
var log = GetProf("PATH", "LogBasePath", "", cur + "..\\Jane2ch.ini");

66行目
cmd.Run("\"" + cur + "Jane2ch.exe\" " + "\"" + WScript.Arguments(0) + "\"");
 ↓
cmd.Run("\"" + cur + "..\\Jane2ch.exe\" " + "\"" + WScript.Arguments(0) + "\"");

3.command.datのwsfとprmファイルにパスを追加
LINKからdat取得=wscript "$BASEPATHhtmltodat\htmltodat-convert2.wsf" "$LINK$URL" "htmltodat\任意の名前"
入力からdat取得=wscript "$BASEPATHhtmltodat\htmltodat-convert2.wsf" "$INPUT" "htmltodat\任意の名前"

835名無しさん:2015/03/22(日) 14:22:53
janexeno & chaikaでhtmltodatByFiddler 2.00を使わせてもらっています

http://kanae.2ch.net/test/read.cgi/nmb/1423569517/
このスレを新規で読み込んだ後、新着チェックをすると416になり「ここ壊れてます」となります。

http://anago.2ch.net/test/read.cgi/software/1426858616/907
ということらしいので差分取得の部分を修正すればいいと思うのですが
htmltodatByFiddlerではどう修正すればいいでしょうか?
ご教示お願いします

836 ◆/vmukiyuzw:2015/03/22(日) 19:35:48
>>835さん

http://jbbs.shitaraba.net/bbs/read.cgi/computer/1929/1038409548/239

にレスしました。
まあそんなこだわりがあるわけでもないんですが
htmltodatByFiddlerについては上のスレでやってきたので
情報が分散するのはあまりよくないなというのと、
本家(?)htmltodatの話題と混ざるとややこしいかもという
感じです。

837835:2015/03/22(日) 20:09:18
>>836
さっそくの対応ありがとうございます。

スレ違いだったようで申し訳ありませんでした。
fiddlerに関する話題はそちらのスレにお邪魔させていただきます。

838名無しさん:2015/03/23(月) 00:34:48
Fiddlerとかあったのか

謎の多い迎撃機だよな

839名無しさん:2015/03/24(火) 23:28:58
突然ですが質問させていただきます。
以下のような、外部板の過去ログとして保存されているスレッドの場合、
http://www2.atchs.jp/spacestar/oldkako/
HTML化は通常の方法でやっても良いのでしょうか?
また、正規表現はどれを選択すれば良いのでしょうか?

どうか返答をお願いします。

840 ◆/vmukiyuzw:2015/03/25(水) 01:03:27
>>839さん
そこの保存過去ログに限定しての回答でいいですかね?

> HTML化は通常の方法でやっても良いのでしょうか?

とは多分prmファイルを使わない方法でもいいかという意味かと思うのですが
そこのログに関していえば前処理も必要になりますので
prmファイルを使わない場合前処理と正規表現の両方の管理が必要になります。
それでも構わないというならいいですがお勧めはprmファイルのほうですね。
前処理・正規表現は以下でいけるかな。
サンプルが少ないのでまだわからないとこもありますが。


前処理:
s`<br />`<br>`ig
s`.nbsp;<br></dt>``ig

正規表現:
m`<DT>(?:<A.*?>)?([0-9]+).+?(?:<A HREF="mailto:(.+?)">)?<b>(.*?)</B>(?:</A>|</FONT>) ?:(.*?)<DD>(.*)<BR><BR>(<dt>|</dl>)`mik

841名無しさん:2015/03/25(水) 18:20:03
>>840
ありがとうございます。無事にdat化に成功しました。
prmファイルというのがわからず検索しましたが理解できませんでした。
普通にhttp://www2.atchs.jp/spacestar/oldkako/3.htmlをHTML化し、
◆/vmukiyuzwさんが教えてくれた前処理と正規表現を記入して変換開始を押しました。

しかし、dat化したファイルを専ブラで読んだ後、専ブラを再起動させると
スレビューが真っ白になり読めなくなってしまいます。
読みたくなったら専ブラを起動するたびにdatファイルを放り込まないといけないようです。

842 ◆/vmukiyuzw:2015/03/26(木) 00:05:44
>>841

> しかし、dat化したファイルを専ブラで読んだ後、専ブラを再起動させると
> スレビューが真っ白になり読めなくなってしまいます。
> 読みたくなったら専ブラを起動するたびにdatファイルを放り込まないといけないようです。

専ブラの種類&バージョンは何でしょう。
あとdatファイルの取り込みはどのように行いましたか?
環境が許せば追試してみます。

# といいながら明日からちょっと忙しいので週末まで何もできないんですが

843名無しさん:2015/03/26(木) 02:10:21
>>842
専ブラはJaneXenoです。
datの取り込み方は、http://www2.atchs.jp/spacestar/ を板登録して、
その板一覧にdatファイルをドラッグ&ドロップしました。
それ以外の方法を知らないので…

お忙しい中すみません。
時間ができたらで結構ですのでどうかよろしくお願いします。

844名無しさん:2015/03/26(木) 07:40:35
>>843
横からごめんなさい。(◆/vmukiyuzwさんではありません)
D&Dはとりあえず読むための方法ですね。
その板はどのツリーに、何という名前で登録しましたか。
例えば、 外部板
        └宇宙の星
というように登録したのだとしたら、(適当でごめんなさい)
\JaneXeno\Logs\2ch\外部板\宇宙の星 という感じのフォルダがあるはずです。
コンピュータからこのフォルダを開いて、ここにファイルを移動します。
よくわかんなければ、外部コマンドに
%板フォルダを開く=explorer "$LOCALDAT\.."
と書いて、板一覧で右クリックし、「板フォルダを開く」をクリックすれば、フォルダが開きます。

845名無しさん:2015/03/26(木) 22:00:18
>>844さん、アドバイスをありがとうございます。
その通りに実行したのですが、やはりスレは真っ白で何も表示されませんでした。
(コマンドも登録しましたが実行されませんでした)
やはり特殊な過去ログ倉庫に入っているスレだからでしょうか。

板登録は、 その他
         └宇宙の星
というふうにしました。

846名無しさん:2015/03/27(金) 00:08:01
2chで途中までログを持っているスレで使用するには
一旦ログを削除してからhtmltodat-convert2.wsfを実行するしか方法はないのでしょうか?

847名無しさん:2015/03/27(金) 00:54:04
質問というか要望というか、です。

1、スレタイの挿入位置を任意のところにしたいのですがデフォで出来ますか?
2ch形式と違いしたらばではスレタイがレス1の末尾でなくその1つ前のブロックなので、
正規表現と変換結果式を工夫してみたり、後処理の中で出来ないかと試したのですが一向にうまくいきません。
もしスレタイ挿入が後処理のあとなのでしたら、変換結果式の中で$titleのような形で指定できるようにしてほしいです。

2、上に関連してですが、したらばのタイトルは<h1>タグの方が本来のタイトルなのでそちらから取得するようにしてほしいです。
前処理でのスレタイ補正も考えたのですが、スレタイや板名次第では面倒なことになるので。
より汎用的にするなら変換結果式の中で$h1titleのような形で指定できたらと思います。

3、datを保存するときに文字エンコードを変更したいのですがどこで指定できますか?
readmeに書かれている「保存文字コード」を探したのですが見つけられません。
少なくともdat保存時のダイアログには表示されてないのです。

一応使用環境はOSはXP SP3、専ブラはChaikaです。

よろしくお願いします。

848844:2015/03/27(金) 07:52:24
>>845
・Windowsのバージョンは?
・Jane2ch.exeの場所は?
 ショートカットから起動しているなら、それを右クリックして「リンク先」をここにコピペしてください
・JaneXenoの設定-【パス】の「ログとボード一覧のフォルダ」をコピペしてください
・その板の現行スレの一覧は見えていますか?
・取得した現行スレはありますか?
・外部コマンドをまだ削除していなければ、スレ一覧で右クリックして「板フォルダを開く」が見えますか?

> やはり特殊な過去ログ倉庫に入っているスレだからでしょうか。
そんなことはないです。

849845:2015/03/27(金) 18:16:11
>>848さま

・Windowsのバージョンは?
Windows7 Home Premiun SP1

・Jane2ch.exeの場所は?
C:\Users\***\Documents\Jane Xeno\Jane2ch.exe

・JaneXenoの設定-【パス】の「ログとボード一覧のフォルダ」をコピペしてください
今見たら白紙状態でした。どう設定すべきでしょうか?(もしやこれが問題!?)

・その板の現行スレの一覧は見えていますか?
はい、見えています。

・取得した現行スレはありますか?
ありません。

・外部コマンドをまだ削除していなければ、スレ一覧で右クリックして「板フォルダを開く」が見えますか?
見えます。クリックしたところ、ちゃんと目的のところまでファイルが開きました!
datをそこにコピーして開いてみたのですが、
(・∀・)サテオシゴト・・・          ε三三三三(; ・∀・)鯖マデオツカイ
HTTP/1.1 400 Bad Request
( ・∀・)(・∀・ )オツカイオワリ 三三三三3
(・∀・∀・)
(・∀・)ナンカエラーダッテ HTTP/1.1 400 Bad Request
(・∀・)カンリョウ!!
というエラーで読むことはできませんでした。

850 ◆/vmukiyuzw:2015/03/28(土) 02:33:29
ちょっと忙しくて離れてた間にあちこちでいっぱいレスがついてる・・・^^;
とりあえずややこしそうなのから行ってみよう。

>>847さん
そもそも、したらばのログを変換してChaikaで読みたいという話なんですよね?
Chaikaの仕様をよく知らないのでわからないとこもあるんですが、
読みたいログはしたらばの現行(生きてる)ログ?それとも過去ログ?
現行ログにしてもhtmlで取得する(read.cgiを使う)方法と
したらば独自のrawmode.cgiを使う方法があるのですがどちらですか?
(貴方の書き方ではどれにでも判断できる気がしてよくわかりません)

変換したいURLのサンプルを(できれば複数)示していただきたく。
また、欲しい結果の形式も通常の2chのdat形式と違うような気もするので
その場合はそれも示していただければと。

1と2についてはまずはそこからってとこで。
3については、確認なんですがChaikaではしたらばのログはEUCのまま
ログを保存してるんですかね?
大抵の専ブラは2chと同様に扱いたいためSJISに変換して保存してるのが
ほとんどだと思うんですが、Firefoxのプラグインだからその辺あまり
頓着しなくてもできるってことなのかな?

851848:2015/03/28(土) 07:40:32
>>849
そうそう、パスにユーザ名が入っていたら伏せてください、って書くの忘れました
ちゃんと***にしてくれてよかったです
ログとボード一覧のフォルダも、(空欄のこともあります)と書いておいたほうが親切でしたね

\Program Filesフォルダ絡みだと超めんどくさいんで、とりあえずそうでなくてよかった

現行スレの一覧が見えるなら、外部コマンドで開いたフォルダにsubject.idbとsubject.txtが
あるはずなのですが、ありますか? 他にファイルはありますか?
フォルダ名は「宇宙の星」で、フォルダのプロパティの「場所」は、
「C:\Users\***\Documents\JaneXeno\Logs\2ch\その他」となっていますか?

以下を試してみてください
・スレ一覧で「宇宙の星」板を開いていたら、閉じる
・レス欄でそのスレを開いていたら、削除する
 フォルダにコピーしたdatは消えると思います
・あらためて、(JaneXenoにではなく)フォルダにdatファイルをコピーする
・「宇宙の星」板を開く
これでスレ一覧の一番下にそのスレが出てくるはずなのですが…

852848:2015/03/28(土) 07:44:36
はっ、◆/vmukiyuzw さんが!
>>850
>>844,848,851

853848:2015/03/28(土) 07:51:18
ミスった…>>852

>>850
>>844,848,851 です。
差し出がましいとは思いましたが、htmltodatとは関係ない所でつまづいてるっぽかったので…
JaneXenoユーザなのでこのくらいは。
chaika使っていればそちらもお手伝いできるんですが、そうじゃないのでさっぱりです。

854847:2015/03/28(土) 22:53:44
>>850
まず確認不足による事実誤認があったので一部撤回します。

>>847の2について現行、過去ログ問わずh1タグが本来のスレタイだと思ってましたが、過去ログではh1タグ自体がないのですね。
てっきりしたらば共通仕様としてあるものとばかり思ってました。
また仮にh1タグの方を使いたい場合でも前処理で本来のタイトルを削除後h1タグをtitleタグに置換すればいいだけと気づきました。

そういうわけで2については撤回します。申し訳ない。

で変換したいのは過去ログです。
ただChaikaと他の専ブラのdatの扱い方が根本的に違うので、どこのスレと指定する必要はないかな。
なんせ、

> 大抵の専ブラは2chと同様に扱いたいためSJISに変換して保存

これに驚きました。多くの専ブラがそういう仕様だったなんて。
テストがてら入れていたJaneXenoで試したら確かに。
Chaikaは最後までofflaw2対応を見送り続けるぐらいに公式ないし準公式な公開情報を尊重し実装してるので、
2ch仕様に変換済みのdatの保存は基本無しの方向です。
(尤も今回のAPI騒動のおかげで封じてきたWebスクレイピングを次回以降の大型アップデートで実装予定ですが)
ですのでサイトから取得したものはそのまま保存し、表示の都度然るべき変換を行ないます。
すなわち

したらば仕様
文字エンコード:EUC-JP
レス番号<>名前欄<>メール欄<>日付<>レス本文<>スレタイ<>ID

のままdatファイルとして保存しています。
このスレならば
http://jbbs.shitaraba.net/bbs/rawmode.cgi/computer/1929/1038588508/
をダウンロードしたのと同じですね。
なので文字エンコード指定とスレタイ位置指定が出来ればということです。

あと追加でprmファイルの読み書きダイアログがやや小さく思います。
初めて開いたときボタン類が見えなかったため使い物にならないと判断してしまいました。
ウインドウを広げればいいだけだったんですが出来れば修正願います。
一応開いた直後のスクショです。
http://light.dotup.org/uploda/light.dotup.org164419.png

855 ◆/vmukiyuzw:2015/03/28(土) 23:31:30
>>854さん
自分でもchaika使って調べてみて、だいたいお書きになった状況だろうなと
想像していました。

で、まず文字エンコードについてですが
htmltodatのウィンドウの何もない場所(例えばプレビュー欄の右上など)
をダブルクリックすると今まで見えなかったボタン等がいろいろ出現すると思います。
そのうち、一番下の欄、「prmファイル」のボタンの右に
「保存文字コード」というリストボックスが現れますので、そこで「EUC」を選択してください。
その状態のままdat保存するとEUC形式になります。

なんでそんな隠し機能になってるかというと>>784参照
つまり、SJIS以外で保存するブラウザがあるとは思っていなかったからです。

で、
> レス番号<>名前欄<>メール欄<>日付<>レス本文<>スレタイ<>ID
については次レスで。

856 ◆/vmukiyuzw:2015/03/28(土) 23:47:18
>>855続き。
後処理で、ID欄を削ってdat一行の最後に付け直すようにしてみました。
スレタイの付加は後処理より前にやっています。
実際に必要なのはスレタイの位置指定ではなくIDの場所移動だったみたいです。
ただ、テキスト上では変換結果を確認したのですが、私のほうで
htmltodatで変換したdatをchaikaで読む方法がまだわからず・・・
確認していただけたらと思います。(できたら教えてください)


コメント:
# したらば過去ログをrawmode.cgiが返すのと
# 同様の形式に変換する

変換結果式:
$1<>$3<>$2<>$4<>$5<>

後処理:
s`(\d+?<>.*?<>.*?)(\sID:(.+?))(<>.+?)\r\n`$1$4<>$3\n`ig

正規表現:
m#<DT><A.*?>([0-9]+).+?(?:<A HREF="mailto:(.+?)">)?<B> ?(.*?) ?</B>(?:</A>|</FONT>)(?: 投稿日)?: ?(.*?)(?:<BR>)?<DD>(.*) ?<BR><BR>#mik

857849:2015/03/28(土) 23:59:33
>>851さま、原因がわかりました。
htmltodatでHTML化、dat化した時に、スレタイである日本語そのままのファイル名で保存されており、
再起動するとそれが文字化けして読み込み不可能となっていたのです。
http://www2.atchs.jp/spacestar/oldkako/を見るとスレッドID項目がありましたので、
その数字にファイル名を書き換えて、>>851さまの
>>以下を試してみてください を実行したところ、成功しました。

外部コマンドで開いたフォルダにはsubject.idbとsubject.txtがあり、
例の文字化けしたdatファイルとidxファイルがありました。
それを削除して、ファイル名を変更したdatファイルをコピーし、
「宇宙の星」板を開いたら目的のスレが出てきました。
今度は再起動しても問題なく読めます。

過去ログ倉庫に移動された際に、**********.datという、従来のような
ファイル名ではなくなったためだと思います。

作者である◆/vmukiyuzwさま、そして救済に入ってくださった851さまには
とんだお騒がせをしてしまい申し訳なく思います。すみませんでした。
お付き合いいただきまして本当にありがとうございました。

858 ◆/vmukiyuzw:2015/03/29(日) 00:10:59
>>855さらに続き。

>>854
> あと追加でprmファイルの読み書きダイアログがやや小さく思います。
> 初めて開いたときボタン類が見えなかったため使い物にならないと判断してしまいました。
> ウインドウを広げればいいだけだったんですが出来れば修正願います。

これ、もともとXPの環境で開発してて、win8.1の環境に移植したときに一回発覚したので
その時に修正したんですが(>>800)、まだ出るんですか。
お使いのOS及びhtmltodatのバージョンをよろしければお教えください。
(といってもいろんな環境でテストできる状況でもないので修正できるかどうかはわからないです)

859 ◆/vmukiyuzw:2015/03/29(日) 00:17:26
>>857さん
問題解決したようでよかったです。
>>851さん
私が留守の間に丁寧にサポートしていただきありがとうございます!


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板