iTunes Store 検索
404 Blog Not Found:Ajax - iTunes Store 検索にインスパイヤされて、同じようなものを awk で作ってみます。 ただし、画像や曲目までは検索せずにアーティスト名とアルバム名だけに限定します。 また、API にアクセスする際には gawk の TCP/IP 通信機能を用いていますので、gawk, xgawk 限定になります。
#! /usr/local/bin/gawk -f
# itunes_store.awk
# iTunes Store で検索します
# usage: gawk -f itunes_store.awk
BEGIN {
name = ARGV[1];
if (name == "") {
exit;
}
itunes_url = "http://ax.phobos.apple.com.edgesuite.net"\
"/WebObjects/MZStoreServices.woa/wa/itmsSearch";
itunes_opt = "?output=json&callback=JSONP.run&country=JP&lang=ja_jp&term="\
name;
# ここからは gawk で /inet にアクセスする際の決まり文句のようなもの
base_url = gensub(/.*\/\/([^/]+)\/.*/, "\\1", 1, itunes_url);
http_service = "/inet/tcp/0/" base_url "/80";
http_str = "GET " itunes_url itunes_opt " HTTP/1.0";
# /inet にアクセス
ORS = "\r\n";
print http_str |& http_service;
print "" |& http_service;
while ((http_service |& getline) > 0) {
if ($0 ~ /wrapperType/) {
num_item = split($0, arr_item, /, "/);
for (i = 1; i <= num_item; i++) {
# アーティスト名
if (arr_item[i] ~ /artistName/) {
artist_name = gensub(/^artistName":"(.*)"/, "\\1", 1,\
arr_item[i]);
}
# アルバム名
if (arr_item[i] ~ /itemParentName/) {
album_name = gensub(/^itemParentName":"(.*)"/, "\\1", 1,\
arr_item[i]);
}
}
if ((artist_name != "" || artist_name != "null") ||
(album_name != "" || album_name != "null")) {
print artist_name " : " album_name;
}
}
}
close(http_service);
}
gawk 限定ということもありますので、gensub() 関数を用いてアーティスト名とアルバム名を抽出しています。
$ gawk -f itunes_store.awk 翼をください 德永英明 : VOCALIST 山本潤子 : 翼をください 桜高軽音部 [平沢唯・秋山澪・田井中律・琴吹紬(CV:豊崎愛生、日笠陽子、佐藤聡美、寿美菜子)] : ふわふわ時間 <snip>
Ajax のような軽快さはないですが、コマンドラインからサクサク検索できるのは良いです。


