動機
LTHの高山紗代子ソロ曲が vivid color か Vivid Color か VIVID COLOR だったか分からなくなり、コマンドラインからアイマス楽曲の正式名称を検索できるようにしたかった。
実装方法
- JSONを返すSinatraサーバをHerokuに立てて、ローカルのスクリプトで叩く。
- 楽曲情報はアイマス楽曲・CDデータベース(情報まとめ)より拝借。
つくったもの
サーバ
app.rb
require 'sinatra'
require 'nokogiri'
require 'open-uri'
require 'json'
require 'unicode'
URL ='http://imas-db.jp/song/detail/'
get '/search' do
title(params['keyword']).to_json
end
helpers do
def title keyword
html = open(URL).read
doc = Nokogiri::HTML.parse(html)
songs = doc.css('div.section > ul > li').map(&:text).to_a
songs.select do |song|
Unicode::nfkc(song).include? Unicode::nfkc(keyword)
end
end
end
ローカルスクリプト
imas_songs.rb
#! /usr/bin/env ruby
require 'json'
require 'uri'
require 'open-uri'
keyword = ARGV.first
url = "https://imas-song-title.herokuapp.com/search?keyword=#{keyword}"
songs = JSON.parse(open(URI.escape url).read)
puts songs
$ ./imas_songs.rb vivid
vivid color