実況 : してログ

テレビの録画をニコニコ実況入れて保存するようにしてから、地上波見るの結構楽しくなってきました。つまらない番組でも実況あると、なんとなく面白く見えてくるので不思議です。もしかしたら地上波が生き残るチャンスかもしれませんよ~。

ただ、どの番組にも必ず荒らすバカはいるものです。そういったユーザーのコメントを消すのに NG ユーザ設定があるのですが、これが XML に出力するとき効いてないんですよね。XML って言ってもテキストファイルなので、今回はエディタなどを使って除去してみようと思います。

せっかくコメント入りの動画を作っても、しつこい卑猥なコメント野郎や意味不明な連投をするユーザがいると台無しです。そういったコメントに毎回反応する「○○○消えろ」とかいったコメントも迷惑。まとめて排除してしまいましょう。

正規表現を考えてみる

いきなりですが、特定のユーザ ID のコメントにヒットする正規表現を紹介します。正規表現が何なのか知らない人は申し訳ありませんがググってください(ここからはプログラミングの知識が必要です)。"NG-USER-ID-HERE" には消去したい NG ユーザの ID を調べて入れてください。また、正規表現は PHP の PCRE 用に書いたものですので、他の処理系では変更が必要かも知れません。

/<chat[^>]+?user_id="NG-USER-ID-HERE".+?<\/chat>/s

実際に除去してみる

正規表現が使えて UTF-8 が扱えるテキストエディタがあれば、上記正規表現を空文字に置き換えれば良いだけです。ただし、エディタによっては絵文字などが化けてしまうのでご注意ください(私が愛用している TeraPad は化けてしまうんですよね)。

プログラムができる人は、シェルスクリプトや PHP などを使ってバッチコマンドを作ると便利です。NG ユーザリストを外部ファイルで供給したり、キーワードによるフィルタなんかも作れば不快なコメントの問題はほぼ解決でしょう。

サンプルコード

私が作った PHP のコードを下記に示します。$xml にコメントデータを読み込み、$nguid にユーザーの ID が入っているものとします。

$reg = '/<chat[^>]+?user_id="'.$nguid.'".+?<\/chat>/s';
$xml = preg_replace($reg,'',$xml);