過去に他のところで作ったブログを、Movable Typeのバックアップファイル経由でTypePad移行しようとしているのですが、ひとつ大きな問題が。
それはスパムコメントが20000件以上もついていることです。エントリはたったの100件足らずのなのに、バックアップファイルの中身は100000行以上もあります。スパム嫌いです。
ファイルの中身をよく見てみると、それぞれのコメントは次のように「—–」で区切られたブロックになっていたので、Rubyのスクリプトを書いて一気に消すことにしました。
AUTHOR: kanouk TITLE: SHORTCUTS.CCについて STATUS: Publish ALLOW COMMENTS: 1 CONVERT BREAKS: __default__ ALLOW PINGS: 1 PRIMARY CATEGORY: About CATEGORY: About DATE: 12/25/2006 12:00:00 AM ----- BODY: このブログでは、WindowsやExcelなどのショートカットを毎日紹介していきます。 要望などありましたら、コメントやトラックバックでどうぞ。 ----- EXTENDED BODY: ----- EXCERPT: ----- KEYWORDS: ----- COMMENT: AUTHOR: web hosting for free EMAIL: cipango_co@gmail.tw IP: 202.180.191.3 URL: http://rnjxmigu.tripod.com/web-hosting-no-ads/web-hosting-for-free.html DATE: 05/07/2007 08:14:47 PM http://rnjxmigu.tripod.com/web-hosting-no-ads/web-hosting-for-free.html >web hosting for free ----- COMMENT: AUTHOR: better sex EMAIL: terry.troia_co@ge.tw IP: 222.118.93.199 URL: http://www.blogger.com/feeds/1047829394809005761/posts/default DATE: 07/02/2007 12:21:57 AM http://www.blogger.com/feeds/1047829394809005761/posts/default >better sex ----- ... ----- -------- AUTHOR: kanouk TITLE: Windowsをロックする STATUS: Publish ALLOW COMMENTS: 1 CONVERT BREAKS: __default__ (以下、100000行...)
で、こんな感じで書いてみました。
#! /usr/bin/ruby -w
ORG_FILENAME = "spamful.txt"
NEW_FILENAME = "spamless.txt"
def main
open(ORG_FILENAME, "w") do |f1|
open(NEW_FILENAME, "r") do |f2|
f1.print(f2.read.gsub!(/^-----\nCOMMENT:.+?(?=^-----)/m, ""))
end
end
end
main
__END__
IO.readとかで全部読み込んじゃったりして軽くダメな感じはするけど、とりあえずうまくいったからいいや。Rubyとか正規表現を使うと簡単にできますねぇ。
コメント