tumblrブログをOctopress用markdownに変換する方法 part2
Finally, I can convert tumblr blog to Octopress!
前回のエントリーでは、tumblr APIを手作業で実行して、xmlを出力したり、octopress用のmarkdownに変換する方法を書いた。
今回は全ての作業を一括して実行するツールであるtumblr2markdownを作った話。
使い方はREADME.mdにも書いた通りだが、日本語でも書いておこうと思う。
Installation
このtumblr2markdownではSymfony2のComsoleコンポーネントを使用している。その依存関係を判断して、自動的に必要なライブラリをインストールしてくれるのがComposerだ。
Install composer
Composerをインストールしていない場合は、まずComposerをインストールする。
curl -sS https://getcomposer.org/installer | php
次はcomposer.jsonを用意しておく。ここにはインストールすべきツールであるtumblr2markdownが必要だ、ということを書いておく。
{
require: {
"satooshi/tumblr2markdown": "dev-master"
}
}
Install tumblr2markdown
それからcomposer
コマンドを使ってtumblr2markdownをインストールする。
$ composer install
which composer
を実行したときにcomposerコマンドが見つからない場合はこの方法でインストールできるはずだ。
$ php composer.phar install
You can git clone as an alternative way
もちろん、直接git clone
しても大丈夫だ。cloneしたディレクトリでcomposer install
すればいい。
# HTTP
$ git clone https://github.com/satooshi/tumblr2markdown.git
# SSH
$ git clone git@github.com:satooshi/tumblr2markdown.git
Usage
tumblr2markdownで使えるオプションは-h
または--help
で確認できる。
# show help
$ php app/console.php tumblr:markdown -h
Usage:
tumblr:markdown [-b|--blogname="..."] [-o|--output="..."] [-d|--dump-redirect] [-t|--type="..."] [-i|--id="..."] [--tagged="..."] [--chrono="..."] [--search="..."]
Options:
--blogname (-b) Your blog name
--output (-o) Output directory (default: "_posts")
--dump-redirect (-d) Dump redirection code for Sinatra
--type (-t) The type of posts to return. If unspecified or empty, all types of posts are returned. Must be one of text, quote, photo, link, chat, video, or audio.
--id (-i) A specific post ID to return. Use instead of start, num, or type
--tagged Return posts with this tag in reverse-chronological order (newest first). Optionally specify chrono=1 to sort in chronological order (oldest first).
--chrono Return posts with this tag in reverse-chronological order (newest first). Optionally specify chrono=1 to sort in chronological order (oldest first).
--search Search for posts with this query.
必要なオプションは-b
または--blogname
だ。ここではブログ名を指定する。自分のtumblrページのURLがsatooshi-jp.tumblr.com
だったら、satooshi-jp
を指定する。
$ php app/console.php tumblr:markdown -b satooshi-jp
これを実行すると_posts
ディレクトリが作成され、この中にY-m-d-slug.markdown
というファイルが出来上がっているはずだ。これがOctopress用のmarkdownファイルとなる。
Filter export posts
出力したいエントリーをフィルターしたい場合には、次のオプションが使用可能だ。
- --type (-t)
- --id (-i)
- --tagged
- --chrono
- --search
--type
はtumblrブログのエントリータイプをフィルターする。例えば、textタイプのみ出力したい場合は、次のようなコマンドを実行する。というより、このタイプ以外には対応していないので、注意が必要だ。
$ php app/console.php tumblr:markdown -b satooshi-jp -t text
--id
は特定のエントリーだけを出力したい場合に使用する。例えば、エントリーIDが43537435080の場合は次のようなコマンドを実行する。
$ php app/console.php tumblr:markdown -b satooshi-jp -i 43975662084
--tagged
は特定のタグが付いたエントリーだけを出力したい場合に使用する。例えば、"photo"というタグが付いたエントリーの場合は、次のようなコマンドを実行する.
$ php app/console.php tumblr:markdown -b satooshi-jp --tagged photo
--chrono
は--tagged
と一緒に使うオプションだ。単に出力順を変えるオプションで、0か1を指定する。
--search
はエントリー内の単語を検索してくれるらしいぞ。実際に付けて実行したことないので、どうなるかは試してみてからのお楽しみだ。
Dump redirection code for Sinatra
もし、tumblrを独自ドメインで使っていて、Octopressでも同じドメインを使う場合、tumblrのURLをOctopressのURLにリダイレクトしたいという事もあるかもしれない。その時には--dump-redirect
または-d
を付けると、リダイレクト用のコードを出力可能だ。ファイルに出力した方が便利だったかもしれないが、echoしただけなので、標準出力に出てくる。完全に手抜きだ。どうしてもファイルに出したい場合は> redirect.rb
とかなんとかしてほしい。
Limitation
適当に作ったツールなので、制限事項がある。
- textタイプ以外のエントリーには対応していない
- htmlフォーマット以外のエントリーには対応していない
もしこれらの制限事項に当てはまる場合は、適当にforkするか、気軽にpull requestして欲しい。もちろん日本語のPRでも大丈夫。markdownフォーマットで書いている場合はpandocを実行しないようにすればいいだけなので、対応も簡単なはずだ。
ちなみに、Githubのページはここにある。