★ INCM Plug-in開発掲示板 ★ TinyGrass Ver0.32a [戻る]
[0483] 03/06/21 16:13 すい(QdNpFGWmwV.): cm_WWWBoard.pl について
はじめまして、こんにちは。
INCM 便利に使わせていただいています。
私は Plugin を色々改造して利用させてもらっているのですが、、、
# 私の環境の都合とか、私が巡回している掲示板のカスタマイズ具合
# によるもの、という個人的な理由の改造がほとんどなのですが。 (;^^;ゞ
で、その改造のうちの幾つか汎用的そうな物を開発元へフィードバック(?)
しておこうと思って書き込んでおきます。
ちなみに利用しているのは ActivePerl 5.22 ですので、以下、その環境でのお話しという事で。
まさかさん作の「cm_WWWBoard.pl Ver0.04 2000/09/19 by まさか」ですが、
「perlでは動作しない。JPerl必須」になっていますが、1箇所書き換えれば
perl でも動作します。
perl で動作しない理由は正規表現中に仮名の長音が含まれているからで、これを
\x?? 表記に直せば perl でもきちんと動作します。具体的には 280行目近辺の
「フォロー記事です」を「フォロ\x81\x5b記事です」に書き換え。これだけで
perl で動作してくれます。JPerl不要。もちろん記事中の「フォロー記事です」にも
きちんとマッチしてくれます。
これで perl で数ヶ月使っていますが、特に問題無さげです。
# 私が行っていない掲示板では どうだか分かりませんが。(;^^;)
さらに INCM の フォルダ プロパティ → 詳細 にて「メッセージのヘッダー形式」
「レスのヘッダー形式」の指定に「ー」が含まれていた場合(ちょっと書式が異なる
“フォロー記事です”とか)のために「ー」⇒「\x81\x5b」の置換処理を入れておけば
なお良し。
具体的には取得した $meshdr_ptn と $reshdr_ptn に対して s/\x81\x5b/\\x81\\x5b/go; しておく。
あと、116行目近辺の sort 部
> $meslist = sort 〜〜
ですが、、、これって明らかにバグ。(汗)
行頭の $meslist は @meslist ですね。(1文字目 $ じゃなくて @ でしょう)
これのお陰で初回巡回時に、記事番号が飛び飛びに30個(しかも古いのとかが)
取得されたり、という わけ分からない状況になってしまったりして悩みました。(;^^;)
「未読ポインタ未指定時(または0指定時)は、最新の30記事のみ取得する」つもり
だったんですよね、きっと。 (;*^^*;)
ついでに cmt ファイル内も、記事番号順通りに取得されていくようになるつもり...
他にも書き換えて利用しているのですが、他の方には、あまり関係無さそうな
私の個人的な変更なので略、という事で、このくらいで。m(_ _)m
# so-net のパソスクみたいに、記事中に画像<IMG SRC="〜">やアンカー<A HREF="〜"></A>を
# 貼れる所で、画像やアンカーの URLアドレスをcmt中に残して分かるように、とか、
# 掲示板によっては記事中に改行が2個連続していたら<P>1個に置き換える所があるので
# <P>は改行2個に置換するように戻した、とか、そんなくだらないのばっか。(^^;
[0482] 03/06/17 11:46 GETWILD'74(QpXyZT5qYs2): Re:480)Re: RSS 用プラグイン ver. 1.2 について
ここはプラグイン開発の掲示板なので、ご質問の内容がちょっと
沿わない気がします。
>RSS 用プラグイン ver. 1.2 を、どなたかBecky2(BKCMプラグイン)で読み取りされてる方はいらっしゃいますでしょうか?
私は使ってないので全く分からないです。(^^;
[0481] 03/06/17 11:46 GETWILD'74(QpXyZT5qYs2): Re:479)Re: ealis 3.0.8 を読めるplug-inを教えてください。
次回からは質問系掲示板に投稿をお願いします。
プラグインはたぶんないと思います。
ある程度読めているなら、改造すれば行けるかもしれません。
[0480] 03/06/05 23:29 ian(xUehsxJ27IA): RSS 用プラグイン ver. 1.2 について
こんにちは。
RSS 用プラグイン ver. 1.2 を、どなたかBecky2(BKCMプラグイン)で読み取りされてる方はいらっしゃいますでしょうか?
もし可能なら、方法を教えてください。
宜しくお願いします。
[0479] 03/05/21 13:56 KAI(sQl8qckJUUE): ealis 3.0.8 を読めるplug-inを教えてください。
こんにちは。
ealis 3.0.8 の掲示板を読み込もうとしています。
http://elm-kai.virtualave.net/cgi-bin/ealis.cgi
http://kano.feena.jp/erial/
T.Taさんの INCM用Plug-in: ealis用 Ver0.0.4 2000/2/22 by T.Ta
一 五明さんの ぷち☆ボード,ErialBBS
を使ってみたのですが、一行ずつしか読み取りが出来ない上、文字化けしてしまいました。
該当プラグインは存在するのでしょうか?
[0478] 03/04/03 19:47 Buckeye(IWcyoI6XJKE): Re:477)Re: プロキシ関連で不具合か?
☆ GETWILD'74さん
あー、そういうことなんだぁ。
テストしてみたら、たしかに"PROXY="パラメータが増えていました。これ、INCM側が書き足すわけなんですね。
これでとっかかりというか、どうしたらいいかの方向性が見えた気がします。
ありがとうございました。
Best regards,
Buckeye
[0477] 03/04/03 18:12 GETWILD'74(7ewbH5F8/fA): Re:476)Re2: プロキシ関連で不具合か?
★Buckeyeさん
>ただ、いずれにしても、incm_bbs.iniに"PROXY="パラメータがないと設定されないわけで……ダイアログを見てもincm_bbs.iniを直接開いてみても、PROXYパラメータは見あたらないんです。
IEのほうでプロキシの設定をするか、INCMのオプションでIEの設定を使用するのオプションをはずしてプロキシの設定をしてから巡回してみるとincm_bbs.iniに"PROXY="パラメータが設定されると思います。
[0476] 03/04/03 17:35 Buckeye(IWcyoI6XJKE): Re:475)Re: プロキシ関連で不具合か?
☆ GETWILD'74さん
そっか、CMLIB15.PL側でやってるんですね。
ただ、いずれにしても、incm_bbs.iniに"PROXY="パラメータがないと設定されないわけで……ダイアログを見てもincm_bbs.iniを直接開いてみても、PROXYパラメータは見あたらないんです。
Best regards,
Buckeye
[0475] 03/04/03 17:07 GETWILD'74(7ewbH5F8/fA): Re:474)Re: プロキシ関連で不具合か?
★Buckeyeさん
>if($proxy){}という処理はあるけど、その$proxyを設定している部分がないように思うんです。
CMLIB15.PLで代入してるみたいですよ。
incm_bbs.iniからパラメータを取得する際に
elsif(/^PROXY=.*http=([^:]+):(\d+)[ \n]/){ ($proxy,$port)=($1,$2); }
elsif(/^PROXY=([^:]+):(.+)\n$/){ ($proxy,$port)=($1,$2); }
の部分で代入されてるようです。
[0474] 03/04/03 16:01 Buckeye(IWcyoI6XJKE): プロキシ関連で不具合か?
私が公開しているcm_@nifty-FORUMプラグインで、プロキシが設定されているためか、うまく動かないという不具合報告をもらいました。これに対し、正常にアクセスできているプラグインとして、↓などがあげられていました。
§ *INCM用Plug-in(ライブラリ): Yahoo掲示板用(新版)
§ Ver0.13b 2002/3/1 by 一 五明 cm_Yahoo_new.pl
で、一五明さんのプラグインのソースも見てみたのですが、cm_Yahoo_new.plって、実際にはプロキシ処理をしていないことになるんじゃないかと思ったんですけど……この理解、間違っているでしょうか。if($proxy){}という処理はあるけど、その$proxyを設定している部分がないように思うんです。
Best regards,
Buckeye
[0473] 02/12/12 22:50 ???(bOpLiVe293Y): 無題
[0472] 02/12/07 01:57 一 五明(0iDqLDdaPWc): Re:469)INCMページのアップローダー
>スペースの件はここにコピーする時に文章を整形したので入ってしまったのだと思います。
掲示板だとtabが飛んだりしますからね(^^;
INCMページのアップローダーのEtc辺りを使うのがいいかも。
http://ka.sakura.ne.jp/~nikeno/incm/upload/
http://kt.sakura.ne.jp/~timeflow/M/
[0471] 02/12/06 21:08 Buckeye(IWcyoI6XJKE): Re:470)RE: 表示方法はないはず…
☆ 3382:GETWILD'74 さん
おー、ソースを公開していたかいがありましたねぇ(^^)
Best regards,
Buckeye
[0470] 02/12/06 16:21 GETWILD'74(Vy2HhQBvukc): Re:468)RE2: 表示方法はないはず…
Buckeyeさん、レスありがとうございます。
Perlで出来ると分かっただけでも収穫でした。
改めてcm_@nifty-FORUMプラグインを見ていて問題点が分かりました。
[DIALOG]だとプロパティを開いた時にプラグインが実行されないみたいですね。
前もその辺りは疑っていたのですが、処理に何か問題があったのでしょう。
もしかしたら書き込む際に[DIALOG]に戻し忘れていたのかもしれません。
とにかく成功して嬉しい限りです。
BuckeyeさんのPerlでも出来るというレスがなかったら、もう一度挑戦して
みようと思うことはなかったでしょう、ありがとうございました。
これでKENT-WEBプラグインなどで、余分な詳細設定をカットできそうです。
[0469] 02/12/06 13:44 ゆう(yxtrs31Q3CY): Re:467)Re2: ソース見ないと理由は不明ですが…
ありがとうございます!
\nを挿入したら読むことができました!
スペースの件はここにコピーする時に文章を整形したので入ってしまったのだと思います。
まだまだ対応したい掲示板があります。
わからなかったらまたお聞きすることがあるかもしれません。
これからもよろしくお願いいたします。
[0468] 02/12/06 13:25 Buckeye(IWcyoI6XJKE): Re:466)RE: 表示方法はないはず…
☆ 7988:GETWILD'74 さん
変ですね、私のところではできてますよ。
開発は、ず〜っとPerlでやって、最後にexeにして動作確認という形だから、Perlでできないことはしていません。今も、動作確認という意味もあって、私の手元では、exe版とPerl版の両方を使っていますが、動きに違いがあると感じたことはありません。
Best regards,
Buckeye
[0467] 02/12/06 12:43 GETWILD'74(FkAfNAHAw2U): Re:463)Re2: ソース見ないと理由は不明ですが…
001.cm$を見てみました。
M:
本文
http://*****.pdf.
S:***********
となっていて、記事の区切りの「\n.\n」になってません。
$udataへの代入を独自にされている部分に問題があります。
s/<a href=\"(.*?)\" target=\"new\">//; $udata="$uribase$1";
を
s/<a href=\"(.*?)\" target=\"new\">//; $udata="$uribase$1\n";
にすれば記事の取得は出来るようになりました。
それとここに掲載されたスクリプトの74行目に全角空白が混入していて
最初はエラーになりました。
[0466] 02/12/06 12:43 GETWILD'74(FkAfNAHAw2U): Re:464)RE2: 表示方法はないはず…
>私のcm_@nifty-FORUMプラグインは、Perlで詳細設定をガシガシ書き換えてますけど。なにか違うものを指しているのかなぁ。
もちろん存じております。
なのでPerl版でも出来ると思ってcm_@nifty-FORUMプラグインも参考に
色々とやってみたのですが、どうしてもダメなんですよね。
cm_@nifty-FORUMプラグインではコンパイル前のPerlの状態で実行
しても詳細設定の書き換えは出来てますか?
私のやり方に問題があるのかなぁ?(^^;
[0465] 02/12/06 11:19 Buckeye(IWcyoI6XJKE): Re:461)RE: ソース見ないと理由は不明ですが…
具体的な手順は、
・PerlプラグインとINCM_BBS.iniを適当なフォルダにコピー
・Windowsの「スタート」メニューから「プログラム」→「MS DOSプロンプト」
とか「コマンドプロンプト」というものを選ぶ
・黒いウィンドウが現れる(DOS窓)。
実行したいPerlプログラムを、エクスプローラからドラッグして、この
・DOS窓にドロップ
・Enterキーを押す
私は、上記が面倒なんで、">001.cm$"を">001.txt"と書き換えて実行するっていうのをよくやります。で、これが簡単にできるように、出力ファイルの指定は変数にしておいて、プログラムの頭で指定するようにしています。
ただ、今回の件だと、タイトルは出るのに記事本文がエラーログ側に出力されるとのことなので、エラーログの出力ルーチンを調べたほうがいいのかなと思います。
Best regards,
Buckeye
[0464] 02/12/06 11:19 Buckeye(IWcyoI6XJKE): Re:459)RE: 表示方法はないはず…
☆ 7988:GETWILD'74 さん
すいません、ここんとこ、きちんと読めていないんではずしているかもしれませんが……
>>iオプションでの詳細設定書き換えもexeでないと出来ないみたいですし。
私のcm_@nifty-FORUMプラグインは、Perlで詳細設定をガシガシ書き換えてますけど。なにか違うものを指しているのかなぁ。
Best regards,
Buckeye
[0463] 02/12/06 11:12 ゆう(ye95RRuO3ZA): Re:461)Re: ソース見ないと理由は不明ですが…
お返事ありがとうございます。ソースは130行くらいですので失礼して・・・
##### INCM用plug-in for 東経投資クラブ用 ver0.1.0
#
# 東経投資クラブ用対応 2002/12/05 by jk
# http://www.tktoushi.com/cgi-bin/stock/info.cgi?key=
#
# 一 五明さんの YY-BOARD plug-in をベースに修正しました。
# ナカタさんの INCM用plug-in for OTD bbs-plain#14アイコン用 ver0.1.0をベースに修正しました。
# ☆返信は出来ません。あしからず。
$_=$0; s/[^\\]+$//; require($_."CMLIB15.PL");
##### フォルダプロパティの設定 ###########################################
$_= <<"#[/DIALOG]";
#[DIALOG]
#URL=1\nUPURL=0\nNAME=0\nEMAIL=0\nHP=0\nKEY=0
#USER=0\nPASS=0\nPARAM1=1\nPARAM2=1
#_URL=掲示板のアドレス(URL)(&A):
#_UPURL=書き込み先のアドレス(URL):
#_NAME=名前:
#_EMAIL=メールアドレス:
#_HP=ホームページ(URL):
#_KEY=削除キー:
#_USER=
#_PASS=
#_PARAM1=読み取りページ数(無指定:1)
#_PARAM2=未読ポインタ(例:01/11/28,06:07)
#[/DIALOG]
#L000=L,,未読ポインタの有効/無効
#L001=R,L_PTR=0,有効(デフォルト)
#L002=R,L_PTR=1,無効
#L003=.
if(&init){
##### 接続/その他の初期設定 ##############################################
unless($local){ # ローカル変換でなければ接続
&httpget('>001.cm$',"") || exit;
}
print &gettitle; # CMTヘッダ出力 ※出力される
$lastptr=$param2 || 0;
$newptr=$lastptr;
##### 記事の出力 #########################################################
$param2=$param2 || 1; # 何ページ読むか
$atclmax=0; # 1ページに最大いくつの記事が有るか
ATCL:{
$atclcnt=0; # 各ページ毎の記事数
$page+=1; print STDOUT "\nPage $page:";
$/="<\/tr>"; # 区切り
while(<HTTP>){ # 区切り毎に、ファイル終端まで $_に読む
s/\r\n?/\n/g;
print LOG $_;
if(/<a href=.*?.pdf.*?target=\"new\">/){ # $_に「pdf」が取得出来たら記事とみなす
if(/<div style=\"font-size:14px\;\">(\d{4}\.\d{2}\.\d{2})<\/div>/){ $tempdate=$1; $tempdate.=" ";}
if(/<div style=\"font-size:14px\;\">(\d{2}:\d{2})<\/div>/){ $tempdate.=$1; }
$date=&getdate($tempdate);
$date=~s/^..//; # 年を2桁化
$usave=$_;
# 未読管理
if($date lt $lastptr){last}
if($date gt $newptr){$newptr=$date}
$num=$rnum="*"; # 記事No
$head=""; # head初期化
s/<div style=\"font-size:14px\;\">(\d+)<\/div>//; $uTempNo=$1; # 番号 使用しない
s/<div style=\"font-size:14px\;\">(\d{4})<\/div>//; $utitle=$1; # タイトル
s/<div style=\"font-size:14px\;\">(.*?)<\/div>//; $utitle.=":$1"; # タイトル
$utitleM=$utitle;
$utitle=~s/ //g;
if (/<tr>/){
$atclcnt+=1;
print STDOUT "."; # 読み取り状況
}else{
$atclcnt+=1;
print STDOUT "*"; # 読み取り状況
}
# $head.="F:$form\&no=$root\&reno=$root\n"; # 返信param
$head.="T:$utitle\n"; # タイトル
$head.="N:東洋経済新報社\n"; # 名前
s/\n//g;
$uribase="http://$host";
s/<a href=\"(.*?)\" target=\"new\">//; $udata="$uribase$1";
s/<div style=\"font-size:14px\;\">(.*?)<\/div><\/a>//; $_="$utitleM $1";
print STDERR "\n==========\n";
print STDERR "S:$num,$rnum,$date,\n"; # 記事ヘッダ出力
print STDERR "$head";
print STDERR "M:\n$_\n$udata\n\."; # 本文の出力
print "S:$num,$rnum,$date,\n",$head; # 記事ヘッダ出力 ※出力されない
&wrtmes($_,$udata); # 本文の出力 ※出力されない
# print "S:$num,$rnum,$date,\n"; # 記事ヘッダ出力 ※出力されない
# print "$head";
# print "M:\n$_\n$udata\n\."; # 本文の出力 ※出力されない
}
} # ← while(<HTTP>)の終わり
##### 次のページ #########################################################
last ATCL if $local; # ローカルファイルなら抜ける
$param2-=1; last unless $param2;
$atclmax=$atclcnt unless $atclmax; # 最初のページの数がページ毎の最大値に
last ATCL if($atclcnt != $atclmax); # 最大値より少ないなら最終ページ(終了)
print STDOUT "\nConnecting...";
if(&httpreq("page=".($page*$atclmax))){ &gettitle; redo ATCL; }
print STDOUT "\nPage ",$page+1," and before cannot read."; # 読めなかった
} # ← ATCL: の終わり
##### 終了 ###############################################################
&fin;
print STDOUT "\ndone.";
}
exit;
##### 覚え書き ###########################################################
__END__
以上です。なにかお気づきな点がありましたらご教授下さい。
人のプラグインをカスタマイズして作っています。
お返事頂いた内容でも調べてみます。
[0462] 02/12/06 09:29 GETWILD'74(ijw3ekq1Rl.): Re:461)Re: ソース見ないと理由は不明ですが…
もしDOSに抵抗があるのなら、Perlが実行できるエディタを使う手もあります。
[0461] 02/12/06 07:57 一 五明(0iDqLDdaPWc): Re:460)ソース見ないと理由は不明ですが…
*.cm$を直接チェックするには、Perl+プラグインをINCMを通さずにDOS窓から
実行する手があります。
カレントディレクトリに INCM_BBS.ini をコピーして実行すれば、そこに
*.cm$ が出力されます。
(DOSのファイラーがあれば便利)
http://kt.sakura.ne.jp/~timeflow/M/
[0460] 02/12/05 16:01 ゆう(yxtrs31Q3CY): Re:458)Re: 表示方法はないはず…
一 五明さん、GETWILD'74さん、お返事ありがとうございました。
とりあえずはできないということですね。。。済みません細かくて(笑)
あと、もう一つ質問いいでしょうか。
001.cm$ファイルに本文が出力されないのです。
かいつまむと、
unless($local){ # ローカル変換でなければ接続
&httpget('>001.cm$',"") || exit;
}
で接続し、
print &gettitle; # CMTヘッダ出力
では「001.cm$」ファイルに出力されるのですが、
本文取得後、出力時に
print "S:$num,$rnum,$date,\n",$head; # 記事ヘッダ出力
&wrtmes($_,$udata); # 本文の出力
としてもファイルには出力されていないのです。
出力フォーマットはエラーログに出力した内容を無理やり「001.cmt」にコピーすると
INCM本体で表示されるので、間違いはないと思います。
わかりにくい説明ですみません。
よろしければお教えください。
[0459] 02/12/05 09:14 GETWILD'74(FkAfNAHAw2U): Re:458)Re: 表示方法はないはず…
> いろいろ仕様は出し合ってたんですが、決定する前にGAEさんの転職引っ越し、
>多忙化、ソース紛失etc.で開発中断で、そのままだったと思います。
でもexe形式だと出来るんですよね?
FreeBoardプラグインでは表示されてますし。
私も前に表示しようとして悩みました。
過去ログ見ても案だけで答えがなかったです。
iオプションでの詳細設定書き換えもexeでないと出来ないみたいですし。
[次のページ]