Business::ISRC 0.01
Business::ISRC というモジュールをcodereposにあげました。
changeset:
http://coderepos.org/share/changeset/16900
本体:
http://coderepos.org/share/browser/lang/perl/Business-ISRC/trunk/lib/Business/ISRC.pm?rev=16900
SYNOPSYS
use Business::ISRC; # create object (validate string) my $isrc = Business::ISRC->new("usl4q0702458"); if (!defined $isrc) { die "invalid isrc format"; } $isrc->country_code; # US $isrc->country_name; # Unites States $isrc->registrant_code; # L4Q $isrc->year; # 07 $isrc->designation_code; # 02458 # get normalized string print $isrc; # US-L4Q-07-02458 # or this is the same as above print $isrc->as_string();
これはISRCをparseして文字列表現を正規化するためのモジュールです。やっていることは単に正規表現で与えられた文字列分割して名前で引けるようにしているだけです。Locale::Country で国コードのチェックをしているので、その副産物として国名の英語表記が取れるようになります。
恥ずかしながら Test::Perl::Critic を初めて使ったのですが、すごく簡単でいいですね。
ISRC とは
ISRC とは主に海外よく使われている(国内でも使われている)楽曲の(厳密には「録音の」)ユニークなコードです。市場に流通しているCD等の音源にこのISRCというコードが振られていて、裏側の楽曲管理に利用されています。例えば僕の「Saitama Life」という楽曲の場合以下のようなISRCが割り振られています。
US-L4Q-07-02458
本当は ISRC-US-L4Q-07-02458 のように ISRC- というprefixが付くのですが、省略されることが多いようです。上記のISRCは以下のような成分に分解出来ます。
US : アメリカの楽曲 L4Q : 事業者コードが L4Q (これは CDBaby のコードかな?) 07 : 2007年の楽曲 02458 : 年内と押し番号が02458
非常にシンプルですね。ISRC の組成や使用方法については以下のサイトが詳しいです。
RESOURCES - ISRC - Handbook (incorporating the ISRC Practical Guide)
http://www.ifpi.org/content/section_resources/isrc_handbook.html
この事業者コードや通し番号(実際は通しじゃないかもですが)の部分を誰が発行しているかというと、それぞれの国のしかるべき団体がコードを発行しているようです。日本の場合だとレコード協会になります。
Busines::UPC
また、ISRCとは別に UPC というコードがあり、アルバム(シングル/アルバムの区分ではなく、楽曲のコンテナ/製品パッケージとしての単位)のユニークなコードとして広く使われてします。上記の「Saitama Life」は「Saitama Life - EP」というアルバムに収録されていて、そのUPCは 634479662768 になります。UPCに関しては既にそれを扱うモジュールがCPANに上がっているようです。
#あまりメンテナンスされてないようですが。。
Business::UPC
http://search.cpan.org/~robf/Business-UPC-0.04/UPC.pm