2009年9月1日火曜日

Blogger用MT形式修正スクリプト

昨日の記事の ブログのコメントがおかしくなりました;; のBlogger用XMLへのコンバートについて書きますね^^

ソラマメ管理画面の読み込み・書き出しから、ブログ記事をMovable Type形式(MT形式)のデータでダウンロードできるんですね。その際、文字コードはUTF-8を指定してください。

そして、保存したMT形式データはMovableType2Blogger conversion utilityでBlogger用データに変換できるんですが、このコンバーターはまだ完成度が低いみたいで、日付データが12時間表記じゃないとエラーが出るんですよw
あと、文字コードはUTF-8でもBOM無し?でないとダメみたいです。試しにWindows XPのメモ帳でUTF-8保存したMT形式ファイルを使うとエラーになりました。

なので変換エラーが出なくなるように、時刻の24時間表記を12時間表記に変換して、記事の投稿時間のずれを調整するPythonスクリプトを書いてみたんです。Pythonはちょっとかじった程度にしか使ったことなかったんですが、Blender使ってる人だったらインストールされてるので使用しました。

#!/usr/bin/env python

import sys,re,datetime

if len(sys.argv) <= 1:
  print "Usage: "+sys.argv[0]+" filename"

else:
  s="dummy"
  text=""
  f=open(sys.argv[1])
  while s != "":
    s=f.readline()
    m=re.match("(^DATE: )(\d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2})(\r{0,1}\n{0,1}$)",s)
    if m:
      data=m.group(2)
      dt=datetime.datetime.strptime(data,"%m/%d/%Y %H:%M:%S")
      dt=dt+datetime.timedelta(hours=-9)
      data=dt.strftime("%m/%d/%Y %I:%M:%S %p")
      s=m.group(1)+data+m.group(3)
    text+=s
  f.close()

  new="conv_"+sys.argv[1]
  f=open(new,"w")
  f.write(text)
  f.close()
  print "Saved to "+new

このスクリプトをmt4blogger.pyって名前で保存して、Windowsだったらコマンドプロンプトを開いて、スクリプトとデータの置いてあるフォルダで次のように入力します。Pythonのインストールされてるフォルダも確認してパスを合わせてくださいね。
c:\python26\python mt4blogger.py blog-UTF-8.txt
blog-UTF-8.txtはソラマメからダウンロードしたデータファイルです。実行すると変換されたデータがconv_blog-UTF-8.txtってファイル名で作成されますので(上書きの確認とかありませんw)、そのファイルをMovableType2Blogger conversion utilityでコンバートしてください。

Pythonのtimeとかdatetimeがややこしくて時差の調整でかなりつまずきました。その時いろいろ検索してたら、ソラマメでは既にweb上で変換できるサービスを公開されてる方がいたんですよw
bloggerに簡単引っ越し(ちょっち修正(mayuko Nishiさん)
んー、もう書きかけのスクリプト放り出して、そちらを利用させてもらおうかな。。。って思ったんですが、もうちょっとで完成って感じだったので何とか諦めずに書き上げたんですけどね^^;

9月5日追記: Blogger形式にコンバートすると追記だった部分やコメント部分の改行だけの行が失われちゃうみたいですね。

0 件のコメント:

コメントを投稿