2010年9月9日木曜日

Bloggerのエクスポートファイルからテンプレートを取り出す方法 - Blogger

Bloggerブログのバックアップと復元
テンプレート(デザイン)をバックアップせずに修正してしまって、元に戻せなくなった時、諦めるのはまだ早いです。
テンプレート修正前にブログの投稿記事をバックアップ(= エクスポート)している場合、そのデータの中からテンプレートの情報を取り出す事が出来るからです。

o Bloggerのテンプレートをバックアップする手順はこちら
o Bloggerの投稿記事をバックアップする手順はこちら


**** 原理
o ファイルの改行文字はUNIX形式(\n)です。データを取り出す時は気を付けます。
o テンプレートが埋まっている場所を探して、その範囲だけ書き出します。
o エスケープされている文字(<>&)がありますので、元に戻します。
   + エスケープされている文字は、他にもあるかもしれません。その時は、変換していない文字がブログで文字化けするでしょうから、その部分を直します。


**** AWKプログラムで取り出す場合の例
o 2010年9月現在のものです。
o Bloggerの仕様が新しくなった時には、正しく変換出来ないかもしれません。

** 実行手順
o Bloggerブログのバックアップデータを探します。
   + 名前が「template-」から始まっているxmlファイル
      + このファイルを見つけたら、そのままBloggerにインポート出来ます。
      + ファイル名の例 template-1234553936789003939.xml
   + 名前が「blog-」から始まっているxmlファイル
      + ファイルの中に、テンプレートXMLも眠っていますので、以下の手順で取り出します。
      + ファイル名の例 blog-09-10-2010.xml
   + どちらの形式も見つからなかった時は、諦めて作り直します。

o AWKを入手します。Gawkがおすすめです。
   + (リンクは、Windowsのものです。)
o AWKの実行ファイルと、下の2つのファイルを、同じフォルダーに置きます。
   + .exe などが表示されない時は、「ファイルの拡張子を変更可能にする方法
   + AWKの実行ファイル名は、Gawk on Windowsの場合「gawk.exe」です。
   + AWKの実行ファイルをコピーしたくない時は、C:\program\gawk.exeのように、ファイルの置き場所まで直接指定する方法などがあります。

o GetTemplate.bat を実行します。
   + 黒い画面が出てきます。
   + 最後に「続行するには何かキーを押してください」と表示されますので、スペースキー辺りを押します。
   + Gawk on Windows以外の処理系で動す時、警告が出る事があります。
      + 警告が出るだけで、処理は最後まで終わっています。
      + 気になる時は、batファイルに書いてある「 -W ctype=UTF8」オプションを外します。
o フォルダーが2つ出来ますので、inフォルダーに、Bloggerのエクスポートデータを置きます。

o もう一度、GetTemplate.bat を実行します。
   + 黒い画面が出てきますので、同様に、スペースキー辺りを押します。
o outフォルダーに、テンプレートファイルが出来ます。
o 念の為、事前に現在のテンプレートファイルをバックアップ(= ダウンロード)します。
o outフォルダーに出来たテンプレートファイルを、Bloggerにアップロードしてみます。
   + ブログの見栄えが元に戻りましたら、成功です。


**** プログラム例。ファイル2つ
** GetTemplate.bat
o こちらのプログラムは、Windows用です。iMacやUNIXの方は書き換えて下さい。
--------
if not exist in mkdir in
if not exist out mkdir out
cd in
for %%F in (blog*.xml) do ..\gawk.exe -v BINMODE=3 -W ctype=UTF8 -f ..\GetTemplate.awk "%%F" > ..\out\"template_%%F"
cd ..
pause
--------

o gawk.exeの部分は、実行したいAWKのファイル名に置き換えます。
o Gawk on Windows以外の処理系で動す時、警告が出ることがあります。動作に支障はありませんが、気になる時は、「 -W ctype=UTF8」オプションを外すと静かになります。

** GetTemplate.awk
o こちらのプログラムは、Windows以外でも動くと思います。
o メモ帳で保存する時、普通に保存して下さい。文字コードUTF-8を選択すると動きません。
--------
BEGIN {
  if (ARGC < 2) {
    print "# GetTemplate from BloggerBlogXML at 2010-09-09 (to_dk notebook)";
    print "# gawk -v BINMODE=3 -W ctype=UTF8 -f GetTemplate.awk input_xml > output_xml"
    exit;
  }
  RS = "[>]";
}
{
  if (status == 0) {
    if ($0 ~/^<category scheme=(.)+\/kind#template'\/$/) {
      status = 1;
    }
    next;
  }
  if (status == 1) {
    if ($0 ~/^<content type='text'$/) {
      status = 2;
    }
    next;
  }
  sub(/<\/content$/, "");
  gsub(/&lt;/, "<");
  gsub(/&gt;/, ">");
  gsub(/&amp;/, "\\&");
  printf("%s", $0);
  exit;
}
--------



==
関連ページ:
    ▼Bloggerブログのバックアップと復元
    ▼Blogger
    ▼制作メモ
    > ▼分析とWebサービス連携
    +
    Bloggerの投稿記事をバックアップする(エクスポート)
    Bloggerの投稿記事を復元する(インポート)
    Bloggerで、カスタマイズしたCSS(= テンプレート)をバックアップする
    Bloggerで、カスタマイズしたCSS(= テンプレート)を復元する
(2010年9月9日変更。GetTemplate.awkに不要な判定があったので削除。動きは同じ)