No Programming, No Life

プログラミング関連の話題や雑記

はてなダイアリーの記事につけたカテゴリーを収集するスクリプト

発端

はてなダイアリーでは [管理 > 設定 > 編集設定 > カテゴリー] にて、記事のカテゴリを指定できると思いますが、バグなのか何なのか、たまに指定していたカテゴリがnullという文字になってしまったりすることがあります。
また、ここで指定したカテゴリーのみsectioncategoryモジュールや記事一覧で表示されるため、すべての記事のカテゴリーを指定しておかないと、あぶれてしまう記事が出てきます。

そこで

そこで、Groovyの力を借りて、記事一覧に存在するカテゴリーを収集して上記、編集設定画面に貼り付ける改行区切りのテキストファイルを出力してくれるスクリプトを書いてみたので、公開します。

ソース(get_category.groovy)*1

switch (args.length) {
  case 2  : break // OK
  default :
    println "usage: groovy get_category [input file (Movable Type)] [output file]"
    System.exit(0)
}

def categorySet = [] as TreeSet // ソートもしときたい
new File(args[0]).eachLine {
  // m0はマッチ部分全体
  it.eachMatch(/^CATEGORY: (.+)$/) { m0, m1 -> categorySet << m1 }
}
def writer = new File(args[1]).newPrintWriter()
categorySet.each { writer.println it }
writer.close()

実行結果


>groovy -v
Groovy Version: 1.5.7 JVM: 1.6.0_10

>type category.txt
カテゴリー1
カテゴリー2
カテゴリー3
  ・
  ・
  ・

>

解説

  1. 引数で入力ファイル、出力ファイルを指定します。
  2. 入力ファイル(上記例ではfumokmm.txt)は [管理 > 設定 > データの管理 > 日記のエクスポート > Movable Type形式 ] でダウンロードしたテキストファイルです。
  3. 出力ファイル(上記例ではcategory.txt)は任意のファイル名を指定します。
  4. スクリプトを実行すると、現在の記事につけたカテゴリーの一覧が出力ファイルに出力されます。
  5. あとは [管理 > 設定 > 編集設定 > カテゴリー] にてcategory.txtに出力された内容を貼り付けるだけ。

*1:動作確認 Groovy Version: 1.5.7 JVM: 1.6.0_10