はてなのテーマ
体調は下降ぎみだったが、持ち直してきたのもあり、テーマを変更してみるかと思い立つ。
テーマの変更をしようと思っても、文字列が並んでばっかりでイメージが無い(調べ方が悪いのかな?)。なので、どんなのがあるのかの概観が解からない。一つ一つ試すのも大変なのでどうしたものかと考えていた。
結論としてはこんな風に表示して、それぞれのサムネイルを表示させて選ぶことができた。特に凝ったことはしていないので、テーマ名などが解かりやすいわけではないが、どんな風なのがあるのか確認できた。
ということで、簡単にやったこと。
テーマのサンプル画面は認証が必要ないみたいなので、あとはキャプチャができればいい。色々Webを探して、CrenaHtml2jpg というアプリが良さそうだったのでこれを利用することにした。このアプリは、コマンドラインも対応しているあたりが使いやすそう。また、以前に Ruby を入れたのでそれを利用して、テーマの一覧から、サンプルページのURLを作成することにした。
付属の perl を元に Ruby でのスクリプトを書いてみる。
# # # Create theme thumbnails # # require 'net/http' STORE_DIR='D:\\tmp\\theme\\' img_file = "hatena.jpg" url = "http://www.hatena.ne.jp" format = "jpeg" window_size = "800x600" save_width = "200" save_height = "150" save_size = "#{save_width}x#{save_height}" quality = "92" timeout = "25" proc_timeout = "30" HATENA_DIARY_DOMAIN = 'd.hatena.ne.jp' HATENA_THEMESAMPLE_PATH = '/themesample' HATENA_GET_THEMES_PATH = "#{HATENA_THEMESAMPLE_PATH}?hatena" HATENA_THEME_URL = "http://#{HATENA_DIARY_DOMAIN}#{HATENA_THEMESAMPLE_PATH}?" File.open("#{STORE_DIR}index.html", "w") do |file| file.print("<html><head><title>Theme thumbnails for Hatena diary</title></head><body>\n") Net::HTTP.start(HATENA_DIARY_DOMAIN, 80) do |http| response = http.get(HATENA_GET_THEMES_PATH) response.body.scan(/<option\s+value=\"([^\"]+)\"\s*>([^<]+)<\/\s*option\s*>/) do |s| img_file = "#{s[0]}.#{format}" url = "#{HATENA_THEME_URL}#{s[0]}" title = "#{s[1]}" cmd_line="CrenaHtml2jpg.exe -o#{STORE_DIR}#{img_file} -f#{format} -w#{window_size}" \ " -s#{save_size} -q#{quality} -t#{timeout} -h0 -f -u#{url}" if !FileTest.exist?("#{STORE_DIR}#{img_file}") puts "Processing #{url} ..." `proccmd -w #{proc_timeout} -c "#{cmd_line}"` else puts "#{img_file} exists. Skip #{url} ..." end file.print("<a href=\"#{url}\" target=\"hatena-theme\"><img border=\"0\" src=\"#{img_file}\"") file.print(" width=\"#{save_width}\" height=\"#{save_height}\" alt=\"#{title}\">") file.print("</img></a>\n") end end file.print("</body></html>\n") end
STORE_DIRに適当なディレクトリを入れてやれば、そこに保存される。時々、エラー(Proxyなんとかだったと思う)になることがあるので、その場合は、その画像だけ削除して実行すれば、その画像だけ作ってくれると思う。
(作成するHTMLは、いい加減だけど)サムネイルが表示できたら、あとはその名前を調べて(リンクを辿ればサンプルページに行く)、自分のテーマに利用すればいいかなと。
参考:
- CrenaHtml2jpg http://www.picolix.jp
- CrenaHtml2jpg のreadmeにあるけどgdiplus.dllが無い場合は MSのサイトから入手する必要があります。
- ActiveScript Ruby http://arton.hp.infoseek.co.jp/indexj.html