Movable Typeのバックアップファイルからコメントを削除するRubyスクリプト

過去に他のところで作ったブログを、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とか正規表現を使うと簡単にできますねぇ。

コメント

コメントする

目次