tDiaryのデータをtDiary+BlogKitに変換するPHPスクリプト
投稿日: 2011年06月11日 更新日: 2017年07月22日
昼休み中にでっちあげた。
<?php
// tDiaryのデータ(*.td2)をtDiary+BlogKitに変換します
// Wikiスタイルにしか対応してません。
// 入力ディレクトリと出力ディレクトリ。環境によって書き換えて使ってください。
// 出力ディレクトリは空のディレクトリ作っておいてください。
$input_dir = dirname(__FILE__) . 'data/';
$output_dir = dirname(__FILE__) . 'output/';
ini_set('pcre.backtrack_limit', '9999999');
ini_set('pcre_recursion_limit', '9999999');
function convert($file, $dir)
{
$td2 = file_get_contents($file);
$days = preg_split('/\n\n\./s', $td2);
array_pop($days);
$output = '';
foreach($days as $day){
list($head, $body) = preg_split('/\n\n/', $day, 2);
preg_match_all('/^![^!].*$/m', $body, $titles);
for($i = 0; $i < count($titles[0]); $i++){
$titles[0][$i] = trim(substr($titles[0][$i], 1));
}
$title = implode(' / ', $titles[0]) . "\n";
$head = preg_replace('/^title:.*\n/mi', 'Title: ' . $title, $head . "\n");
if(count($titles[0]) === 1){
$body = preg_replace('/^![^!].*$/m', '', $body);
}
$output .= $head . "\n" . $body . "\n\n.";
}
$yyyy = substr(basename($file), 0, 4);
if(!file_exists($dir . '/' . $yyyy)){
mkdir($dir . '/' . $yyyy);
echo ($dir . '/' . $yyyy) . "\n";
}
file_put_contents($dir . '/' . $yyyy . '/' . substr(basename($file), 0, 6) . '.td2', $output);
}
foreach(glob($input_dir . '/*') as $file){
$file = realpath($file);
if(!is_dir($file)){
continue;
}
if(preg_match('/^[0-9]{4}$/', basename($file)) === 0){
continue;
}
foreach(glob($file . '/*.td2') as $td2_file){
convert($td2_file, $output_dir);
}
}
名前:宮内 はじめ
Code for Nagoya名誉代表
E2D3名古屋支部長
プログラマーです。GISやデータビズが好きです。このサイトは宮内の個人的なメモです。