BLOGGER ftp公開廃止に伴う移行 その1 xml成形

BLOGGERもFTPでの公開が終了してしまいました。
4月のの頭ぐらいに認識してましたけど、時間の空いたときに作り直してどうにか完成しました。

苦労したのは、コメントの収得javascriptでアクセスしにいっても取れる文字数が決まっていました。
とりあえず、全コメントを直接アクセスし手動でファイルに取り込みました・・・
けど、4/30日に久しぶりにBLOGGERにアクセスすると、XML形式で移行用に全データ収得できたようです。
チェッ・・・ということで拾い出し用のスクリプト作ってみました。
export.php等で適当に保存して試してみてください

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html lang=”ja”>

<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
<title>BLOGGER-データ摘出</title>
<style type=”text/css”>
body {background:#fff;margin:20px;padding:5px 0px;font-size:12px;color:#000}
</style>
</head>
<body>
<?php

$importXML =”./blog-04-30-2010.xml”;
$email =”value@peaks.jp”;
$blogtitle = “ヘアサロン店長の独り言”;

if (file_exists($importXML)) {
$xml = simplexml_load_file($importXML);

foreach ($xml as $feed) {

$comment=$draft=0;$taglist=””;
if(count($feed) <= 9){continue;}
if((string) $feed->title == “テンプレート: $blogtitle”){continue;}

$published = $feed->published;
$BlogLogData = “記入日時:published–>” . $published . “<br />”;
$title = ereg_replace(“\r|\n”,””,$feed->title);
$title = htmlspecialchars($title);
$BlogLogData .= “title–>”. $title. “<br />”;

$BlogLogData .= “タグ:category–>”;

foreach ($feed->category as $category) {
$tag = $category[‘term’];
switch((string) $tag) {
case ‘http://schemas.google.com/blogger/2008/kind#post’:$tag=””;
break;
case ‘http://schemas.google.com/blogger/2008/kind#settings’:$tag=””;
break;
case ‘http://schemas.google.com/blogger/2008/kind#template’:$tag=””;
break;
case ‘http://schemas.google.com/blogger/2008/kind#comment’:$tag=””;$comment++;
break;
}
$BlogLogData .= $tag;
if($tag){$taglist.=$tag.”,”;}
}
$labellist .= $taglist;
$BlogLogData .= “<br />”;

foreach ($feed->link as $link) {
if((string)$link[‘rel’] == ‘alternate’){
$url = $link[‘href’];
$BlogLogData .= “link–>”. $url . “<br />”;}
}

$content = ereg_replace(“\r|\n”,”<br />”,$feed->content);
$BlogLogData .= “本文:content–>”. htmlspecialchars($content). “<br />”;
$BlogLogData .= “更新日時:updated–>”. $feed->updated. “<br />”;
$announce=””;
if($feed->author->email != $email){$announce=”<font color=’red’><b>コメント</b></font>”;}
elseif(count($feed) == 10){$announce=”<font color=’red’><b>下書き</b></font& gt;”;$draft++;}
$author=$feed->author->name . ‘,’. $feed->author->uri . ‘,’. $feed->author->email ;
$BlogLogData .= “author–>$author,$announce”;

$BlogLogData .= “<hr/>\n”;
$BlogLogall.=$BlogLogData;
$insert = “$published<>$title<>$taglist<>$url<>$content<>$author\n”;
$insertlog.=$insert;
if($comment){$ComentLog.=$BlogLogData;$BlogLogData=””;$Comentinsert.=$insert;}
elseif($draft){$draftLog.=$BlogLogData;$BlogLogData=””;$draftinsert.=$insert;}
else{$BlogLog.=$BlogLogData;$BlogLogData=””;$BlogLoginsert.=$insert;}
}
// print_r($xml);
} else {
exit(‘Failed to open {$importXML}’);}

$labellist = explode(",",$labellist);
$labellist = array_unique($labellist);//array_unique -- 配列から重複した値を削除する"
if(isset($_GET['BlogLogall'])) {print $BlogLogall;$filename="BlogLogall";$insertlog;}
if(isset($_GET['BlogLog'])) {print $BlogLog;$filename="BlogLog";$insertlog=$BlogLoginsert;}
if(isset($_GET['ComentLog'])) {print $ComentLog;$filename="ComentLog";$insertlog=$Comentinsert;}
if(isset($_GET['draftLog'])) {print $draftLog;$filename="draftLog";$insertlog=$draftinsert;}
if(isset($_GET['taglist'])) {if($labellist){
sort($labellist);$insertlog="";foreach ($labellist as $key => $val) {
if($val){print "$key".")".$val."<br />";$insertlog.="$val\n";}}}$filename="taglist";}

$insertlog = explode("\n",trim($insertlog)); //この3行は昇順での書き込み用です
usort($insertlog, "cmp"); //
$insertlog=join("\n",$insertlog); //

if($filename){
$pointer=fopen("./$filename.log", "w"); //'w' 書き出しのみでオープンします。ファイルが存在しない場合には、 作成を試みます。
flock($pointer, LOCK_EX); //ファイルをロックします
fputs($pointer, $insertlog); //書込みです
flock($pointer, LOCK_UN); //ロックを解除します
fclose($pointer); //ファイルを閉じます
}
#------------------------------------------------
function cmp($b, $a){
preg_match("/([0-9]{2,4})-([0-9]+)-([0-9]+)/", $a, $args );$a_time = mktime(0,0,0,$args[2], $args[3],$args[1]);
preg_match("/([0-9]{2,4})-([0-9]+)-([0-9]+)/", $b, $args );$b_time = mktime(0,0,0,$args[2], $args[3],$args[1]);
if( $a_time == $b_time ) return 0;
return ($a_time > $b_time ) ? -1 : 1;
}

?>
</body>
</html>

 

http://www.blogger.com/export-blog.g?blogID= 自分のID

にアクセスしプログをダウンロードします。
或いは、bloggerにログイン後 設定 → ブログツールのエクスポート → プログダウンロードも同じデータです。

ダウンロードしたファイルをexport.phpと同一フォルダに置き、

export.phpを開き15行目からの下記の欄をダウンロードしたファイル名、使ってるemail、プログのタイトルに書き換え

$importXML ="blog-04-30-2010.xml";
$email ="value@peaks.jp\";
$blogtitle = "ヘアサロン店長の独り言";

 

下記のリンクをクリックすると実行スクリプトと同一フォルダにデータを書き出します。
同時に、下記に書き出すデータが表示されます。

<a href='?BlogLogall'>オールログ</a>
<a href='?BlogLog'>ブログログ</a>
<a href='?ComentLog'>コメントログ</a>
<a href='?draftLog'>下書きログ</a>
<a href='?taglist'>タグ一覧</a>

書き込みのデータ形式は
記入日<>タイトル<>タグ<>URL<>内容<>著者となっているので適宜使いやすいように適当に修正してください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください