こえ部の声リストを作成するRubyスクリプト

俺はたまーにこえ部を聞いている。
しかし、w3mだと聞けないので声リストを抜き出すスクリプトを作ってしまった。Ruby 1.9対応。出力はUTF-8

ついカッとなってやってしまった。反省はしていない。

# -*- coding: utf-8 -*-
require 'rubygems'
require 'json'
require 'open-uri'

url = ARGV.first
#html = File.read("/tmp/test.html", :encoding=>"UTF-8")
html = open(url, "r:UTF-8").read
json = html[ /var songs += (.+);$/, 1]
songs = JSON.parse(json)
songs.each do |song|
  puts "Title: #{song["topic_title"]}"
  puts "Author: #{song["author"]["full_name"]}"
  puts "Description: #{song["description"]}"
  puts "File: #{song["mp3"]}"
  puts
end

実行例

$ ruby19 koebu-extract.rb "http://koebu.com/topic/%E3%80%90%E5%B7%A1%E9%9F%B3%E3%83%AB%E3%82%AB%EF%BD%A5%E9%8F%A1%E9%9F%B3%E3%83%AA%E3%83%B3%E3%80%91%E3%80%8CANTI%20THE%E2%88%9EHOLi"
Title: 【巡音ルカ・鏡音リン】「ANTI THE∞HOLiC」【歌ってみよう!】
Author: 葩畄
Description: ANTI THE∞HOLIC 歌ってみましたww えと、早口無理ですwww無謀すぎましたwwwwなので、ところどころ抜けたりしてますが…許してくださいwwwww うるさい感じの仕上がりですwww 音量注意かもwww
File: http://koebu.s3.amazonaws.com/mp3/b/bf/bfac/bfac6175c3913b3c52002be4a762e030458431ff.mp3

Title: 【巡音ルカ・鏡音リン】「ANTI THE∞HOLiC」【歌ってみよう!】
Author: らるぅ
Description: ANTI THE∞HOLiC歌ってみました!!
早口苦手なのでカミすぎですねwww
暴走Pさん大好きなんですが曲が難しすぎるーー
File: http://koebu.s3.amazonaws.com/mp3/c/cc/cc1c/cc1c85c3057a57cfa708066cb0bed835feed2f14.mp3

ちなみに、件のJSONは以下のようなハッシュの配列である。

{"mp3"=>
  "http://koebu.s3.amazonaws.com/mp3/b/bf/bfac/bfac6175c3913b3c52002be4a762e030458431ff.mp3",
 "topic_id"=>"56115e19f222f4472a1cadf98d55c407ac88d590",
 "duration"=>307,
 "author"=>
  {"icon"=>"1b00f43cea62dcc3abf51a0241a7466707b05e65",
   "icon_format"=>"jpg",
   "full_name"=>"葩畄",
   "screen_name"=>"harurion"},
 "created_date"=>1249443797,
 "topic_video"=>nil,
 "description"=>
  "ANTI THE∞HOLIC 歌ってみましたww えと、早口無理ですwww無謀すぎましたwwwwなので、ところどころ抜けたりしてますが…許してくださいwwwww うるさい感じの仕上がりですwww 音量注意かもwww",
 "topic_image"=>nil,
 "rate"=>"58",
 "topic_link"=>
  "/topic/%E3%80%90%E5%B7%A1%E9%9F%B3%E3%83%AB%E3%82%AB%EF%BD%A5%E9%8F%A1%E9%9F%B3%E3%83%AA%E3%83%B3%E3%80%91%E3%80%8CANTI%20THE%E2%88%9EHOLi",
 "topic_title"=>"【巡音ルカ・鏡音リン】「ANTI THE∞HOLiC」【歌ってみよう!】",
 "playcount"=>202,
 "id"=>"bfac6175c3913b3c52002be4a762e030458431ff",
 "topic_count"=>"2",
 "gender"=>"female"}