• 2018-07-22
ウズマスター戦記
ウズマスター戦記 https://www.uzumax.org/2018/07/google-blog-converters-appengine.html

google-blog-converters-appengine解析記録

MT形式ファイルをBlogger形式に変換するためのツールとして、Google公式が変換ツール「google-blog-converters-appengine」を提供してくれています。

これの使い方と、自主的な改造を行っていきます。

また、これを自分で使うことでsyasudaのツールで発生する文字化けも回避することが出来ます。

頑張って行きましょう。



歴史

このツール、元々は今や廃止された公式変換サイトのソースのようですね。


  • (消滅)MovableType2Blogger conversion utility(http://movabletype2blogger.appspot.com/)


このサイトは潰れてしまいましたが、残されているソースを使えば自分で変換が可能です。

ダウンロード

では、早速モノをゲットします。

google-blog-converters-appengineにアクセスし、圧縮ファイルをダウンロードして下さい。


この時点で既に意味不明ですが、並んでいるものは全て同じだと考えて問題ありません。

Windows環境で動かす場合はOpSys-Windowsと付いているところが対象であるような気もしましたが、付いていない方でも別に何も変わりなく。

どれでも良いのですが、とりあえず最新版である「google-blog-converters-r89.tar.gz」をダウンロードしていきましょう。

解凍

ダウンロードしたら解凍します。
圧縮形式はtar.gzと、Windowsでは馴染みの無い圧縮形式ですが、Lhaplusなどの解凍ツールを使用すれば問題無くダウンロード出来るでしょう。

Python2のインストール

そろそろプログラマー的な話に入って来ます。

本ツールは「Python2」と言いまして、比較的最近になって注目を集めている言語の前世代の言語です。
2018年現在の最新はPython3ですが、Python2とPython3は互換性がありません。

従って、わざわざ古いバージョンであるPython2を取得して自分のPCにインストールする必要があります。

公式サイトに従ってPython2をインストールして下さい。

インストール確認

ちゃんとインストール出来ているか確認してみましょう。
Pathが通っていないとか、この辺りでトラブルことが多いので。

コマンドプロンプトで「python --version」と入力して下さい。
無事にPython2と出れば正常にインストール完了です。



google-blog-converters-appengineの中身解説

google-blog-converters-appengineを展開すると以下のようなファイル達が出てきたと思います。




  • bin:実行する時に使うトリガー用
  • lib:ライブラリ
  • samples:サンプルが入っている
  • src:ソース本体

とりあえず実行してみたいので、まずはbinに行ってみましょう。

いざ実行

movabletype2blogger.batを選択

binのフォルダに入ると色々なファイルが出てきて何じゃこりゃ、というところですが。


google-blog-converters-appengineは今から行おうとしている「MT形式→Blogger形式」の変換だけではなく、その逆や、WordPress形式からの変換にも対応しているのです。

Windows環境で「MT形式→Blogger形式」を行う場合、必要となるのは以下です。


  • movabletype2blogger.bat


変換対象ファイル設置

そして、このフォルダの中に変換対象となるMT形式のファイルを置きます。
(私の場合は、mt_1532204713.txt。ファイル名は各自で読み替えて下さい)


変換実行

コマンドプロンプトで以下を実行します。

movabletype2blogger.bat mt_1532204713.txt > mt_1532204713.xml

mt_1532204713.xmlというファイルが出力されました。


結果確認

正常確認

ここで、正常に変換されているか必ず出力したxmlファイルの中身を確認して下さい。

正常であれば以下のように正しいXMLになっているはずです。


エラーの場合

ここでエラーになり「何も出力されていない」という状況になった場合、変換元となるMTファイルが悪いんですよ。

例えば、時間表記形式の変換を行っていないとかね。

時間表記形式の変換については、私の別記事「MT形式ファイルをBlogger形式に変換する」をご確認下さい。

また、ジュゲムから変換している場合は「コメントのAUTHORの欠落」という事象で落ちているかもしれません。

それについてはこちら「ジュゲムから記事をエクスポートし、MT形式に変換する」をご確認下さい。

それでもダメな場合

何が原因でダメなのか分からない場合は、もうデバッグしかありません。
ソースが手元にあるわけですから、頑張ってデバッグしていきましょう。

コメントの文字化け

文字化け箇所

さて、一見すると無事に変換されたように見えますが、実はこんな事象が。



あぎゃ~。コメント欄の「ns0:title」が文字化けしてやがる。。。

コメントのタイトルですね。
Bloggerにはコメントにタイトルなんか無いので必要無いはずなのですが、実際にはこのまま文字化けしているとBloggerへアップロードした時に落ちるという事象があったように思えます。

文字化けは解消しておいた方が安全かもしれません。

ソース改造

src/movabletype2blogger/mt2b.py

文字化けが発生している原因は「src/movabletype2blogger/mt2b.py」のココです。

  def _CreateSnippet(self, content):
    content = re.sub('</?[^>/]+/?>', '', content)
    if len(content) < 50:
      return content
    return content[0:49] + '...'


content[0:49]となっているでしょ?

これは「コメントが50バイト以上の場合、49バイト目までを切り取る」という意味のソースなのですよ。

しかし、日本語は2バイト文字です。
49~50バイト目が日本語の場合、日本語の半分だけが切り取られて破壊されるという結果になります。

これが文字化けの真相です。

修正

そこで、ソースを以下のように修正してしまいましょう。

  def _CreateSnippet(self, content):
    content = re.sub('</?[^>/]+/?>', '', content)
    if len(content) < 50:
      return content
    #return content[0:49] + '...'
    return 'comment trimed' + '...'

コメントのタイトルなんて必要ありませんから、適当な英単語で置き換えてやれば良いのです。

再実行

これで文字化けが解消されているはずです。


お疲れ様でした。

終わりに

やれやれ、ここまで辿り着くのに大変な苦労をしました。
本来の公式サイトは潰れているわ、動かない原因は分からないわ、文字化けするわ……。

この公式サイトもいつまであるか不安なので、文字化けを修正したソースをGitHubに避難させておきました。




さて、これでようやくBloggerへのインポートが可能になります。

末永くブログを続けていきたいものです。

お疲れ様でした。

0 件のコメント:

コメントを投稿

お気軽にコメント下さい。