at posts/single.html

tDiary のツッコミ SPAM を期間指定で削除する

tDiary にはツッコミ SPAM を一括削除するための tdiary-comment-clean というスクリプトが付属している。 このスクリプトは、正規表現とツッコミファイル (*.tdc) を引数として指定し、ツッコミ本文が正規表現にマッチしたらツッコミを削除するというもの。

でも、最近だと特定の期間に大量のツッコミ SPAM がくることが多い。 ちゃんとSPAM対策をしていれば、フィルタから漏れたツッコミだけを削除すればいい。 なので、スクリプトを修正して、削除対象とするツッコミの投稿日時を指定できるようにした。 使い方はこんな感じ。

tdiary-comment-clean2 -a 48 -b 24 free 2008/200803.tdc

-a は after hour で -b は before hour 。この例だと 200803.tdc に含まれる 48時間前から24時間前までの間に投稿されたツッコミを対象として、 free という単語が含まれるツッコミを削除する。 パターンの指定などは、従来の tdiary-comment-clean と同じ。

うちの日記の場合は、48時間前から24時間前に投稿されたツッコミをぜんぶ削除した。コマンドは以下の通り。

find . -name '*tdc' -ctime -2 | xargs ./tdiary-comment-clean2 -a 48 -b 24 . > delete.txt
  • find コマンドを使って、2日以内に更新されたツッコミファイル (*.tdc) を抽出する。
  • xargs コマンドを使って、それぞれのツッコミファイルに対して48時間から24時間以内に投稿されたツッコミをすべて削除する(削除パターンにドットを指定)
  • delete.txt を確認して、 SPAM 以外のツッコミを削除していないかどうかチェック

ついでに試験用の「-t」オプションもつけた。 -t を指定すると、ツッコミファイルを削除しないようになる。 削除対処となったツッコミは標準出力に出力されるので、事前に -t コマンドで確認してから、実行することができる。 もちろん、どのスクリプトを使うにしても、事前にファイルはバックアップしておいた方がいいけどね。

スクリプトは CodeRepos にコミットしたよ。

関連する日記