コンピュータ囲碁・将棋@2ch 動的リンク集作りました
http://misakirara.s296.xrea.com/shogi/index.php
やや突貫工事で作りましたが、動的リンク集の「囲碁・将棋」版を作りました。
今のところ巡回対象の板は、
$ita[0] = "ニュース速報+板"; $ita[1] = "科学ニュース+板"; $ita[2] = "将棋・チェス板"; $ita[3] = "プログラム板"; $ita[4] = "囲碁・オセロ板";
です。
2ch検索でてきとうに検索してみて関係ありそうなスレを含む板を調べました。
「こんなスレが抜けている」というのがありましたら、随時コメントにでも書いて下さい。
とりあえず公式に近いサイトのリンク集もフッターに入れておきました。
あと、手動更新なんで、見かけたら時々更新してやって下さい( ̄ー ̄)
息の長いスレが多いのでしばらくほっておいても大丈夫でしょうが。
今のところこんな感じ。
[科学ニュース+板] [スレ一覧] 【コンピュータ】将棋ソフト世界一に「Bonanza(ボナンザ)」、人間との勝負では敗北 (162) 【人工知能】将棋ソフト「ボナンザBonanza」、トップ棋士と対局 (290)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
本当は理研と富士通のプロ棋士研究スレも抽出したいんですが、ルールが難しい(^^;
プロ棋士+富士通では、普通の将棋系のスレも抽出しそうだし。
ベイズみたいにキーワードで確率持てばいいけど、完全じゃないし、まあ、今後の課題ってことで。
2chのスレッドをPHPで取得する方法
せっかくなので解説記事を。
知ってる人には自明ですが、覚えると色々と面白いこともできると思いますよ
$url="http://news22.2ch.net/newsplus/" //板のURLを入れて下さい $HEADLINE = split("\n", http( $url."subject.txt" ) ); //subject.txtを付けると板一覧がテキストで取得出来ます $url2[$j] = ereg_replace( "2ch.net/","2ch.net/test/read.cgi/",$url ); for($i=0;$i<=COUNT($HEADLINE);$i++) { //スレ毎の処理 list($dat,$title) = split( ".dat<>",$HEADLINE[$i],2); fwrite( $fp, " <a href=\"". $url2[$j].$dat ."/l50\">".$title."</a><br>\n" ); }
httpという関数でソケット通信を行っています。
スレ一覧は板URL+"subject.txt"というテキストファイルで置いてありますので、
まずそれを取得します。
「\n」(改行)でsplit(分割)して配列として取得します
URLの一部を書き換えます
あとは、$HEADLINE配列に各スレのタイトル、URL等が入っています。
(<>で区切られた形式のテキストで1行)
「.dat<>」を条件にsplitで欲しい情報を取りますと、
この場合、$dat番号。$titleにタイトルが入っています。
上記の処理は、subject.txtの中身を見れば、どのように処理をすればいいかは自明ですが、
肝心の以下に2chの情報を取得するか?ですが、
ユーザーエージェントで判断されています。
ソケット通信で、
$request .= "User-Agent: Monazilla/1.00 (kanata/1.00)\r\n";
のようにユーザーエージェントを指定して下さい
必須は「Monazilla」の部分です。
これは2chブラウザなどの専用ツールであることを意味しています。
その後ろは自分のアプリケーションの名前を付けて下さい。
これで、dat自体も取得できます。
GoogleNewsから欲しいニュースをとってくる
$fp = fopen("./news.txt", "w"); // 新規書き込みモードで開く $HEADLINE = split("<td valign=top class=j>", http( "http://news.google.com/news?hl=ja&ie=Shift_JIS&oe=Shift_JIS&um=1&tab=wn&q=%82%E7%82%AB%81%99%82%B7%82%BD&scoring=n" ) ); //スレ別ループ for($i=0;$i<=COUNT($HEADLINE);$i++) { if( ereg( "^<a href=",$HEADLINE[$i] ) ) { $temp = ereg_replace( "</a>.+$","</a>",$HEADLINE[$i] ); fwrite( $fp, " ".$temp."<br>\n" ); } } fclose( $fp );
http関数に渡すURLは、実際にGoogleNewsで検索したURLです(検索文字列がURLエンコードされてます)
この場合は「らき☆すた」です(たしか)
ソケット通信で取得したHTMLから、URLとタイトルをぶっこぬけば
RSS風の情報が作れます(笑
二ヶ月ぐらい前は動いてましたが、今試したワケではないので、GoogleNewsの方で生成HTMLに変更があった場合
うまく動かないかもしれません。
chessのソフト指し対策
たまたま動的リンク集で見つけたスレを読んでいて見かけた
チェスサイトで取られているソフト指し対策まとめ (ICC、Playchess.Comなど) 1)クライアントがチェスソフト起動を感知し、警告を出したり負けに したりする。 2)頻繁にウインドウ切り替えを行っている場合、同じくクライアントが 感知して警告を出す。 3)「無視」機能を実装して、嫌なプレイヤーからのゲーム申し込み、 チャットなどを自動的に拒否するようにする 4)専門チームをつくって、怪しいと訴えのあったプレイヤーのゲームを 解析し、ソフト指しの疑いが濃い場合は警告メールを出したりアク禁 にする 4)以外はすぐできるんじゃないの?
ほとんどウイルス検知ソフトみたいですね(^^;
あとサーバー監視ソフトっていうか