/*
* @title はてなアルバムからはてなブログに引っ越す
* @description はてなアルバムからはてなブログにインポート可能なMT形式を生成します.アルバムページで実行してください.
* @include http://album.hatena.ne.jp/album/*
* @license MIT License
* @require http://higashi-dance-network.appspot.com/bon/js/base64.js
*/
var template = function(text) {
return function(values) {
return text.replace(/{([^}]+)}/g, function(_, key) {
return values[key];
});
}
};
var item_template = template([
"AUTHOR: {author_name}",
"DATE: {date}",
"PRIMARY_CATEGORY: {category}",
"-----",
"BODY:",
"{body}",
"--------"
].join("\n"));
var item_to_mt_syntax = function($img, category) {
var fotolife_url = $img.attr('data-image-url');
var image_url = $img.attr('data-image-image');
var $a = $('<a>');
$a.attr('href', fotolife_url);
var pathname = $a[0].pathname;
var author_name = pathname.split('/')[1];
var date = pathname.split('/')[2];
var year = date.substr(0, 4);
var month = date.substr(4, 2);
var day = date.substr(6, 2);
var hour = date.substr(8, 2);
var minute = date.substr(10, 2);
var second = date.substr(12, 2);
var body_template = template('<p><img class="http-image" src="{url}"></p>\n<p>Photo by id:{author_name}:detail</p>');
var date_template = template('{month}/{day}/{year} {hour}:{minute}:{second}');
return item_template({
body: body_template({url: image_url, author_name: author_name}),
date: date_template({year: year, month:month, day:day, hour:hour, minute:minute, second:second}),
author_name: author_name,
basename: date,
category: category
});
};
var main = function() {
var mt_syntax = $('.photo-image').map(function() {
var $img = $(this);
return item_to_mt_syntax($img, Hatena.Album.title);
}).get().join("\n") + "\n";
var $message = $('<p>');
$message.css('background', 'white', 'padding', '5px');
$message.append('ファイルの準備ができました.');
$message.append('<br>');
$message.append('右クリックで保存してください:');
var $download = $('<a>');
$download.css('text-decoration', 'underline');
$download.text(Hatena.Album.title + '.txt');
$download.attr({
href: 'data:text/plain;charset=utf-8;base64,' + Base64.encode(mt_syntax)
});
$message.append($download);
$message.append('<br>');
$message.append('ダウンロードしたファイルはMovableTye形式ではてなブログにインポートできます:');
var $import_link = $('<a>');
$import_link.css('text-decoration', 'underline');
$import_link.attr('target', '_blank');
$import_link.attr('href', 'http://blog.hatena.ne.jp/my/import/movable_type');
$import_link.text('はてなブログにインポートする');
$message.append($import_link);
$message.hide();
$('#container').prepend($message);
$message.slideDown();
};
if (!$('body.album')[0]) {
alert('アルバムページで実行してください');
return;
}
main();