MusicBrainzオンラインサービスを使って、曲名・アーティスト名より、その曲が含まれるアルバムを全て表示する。
#!/usr/bin/perl use warnings; use strict; use WebService::MusicBrainz::Track; use WebService::MusicBrainz::Release; #use Data::Dumper; my $ws_track = WebService::MusicBrainz::Track->new(); my $response = $ws_track->search({ TITLE => 'Soak Up The Sun', ARTIST => 'Sheryl Crow' }); my @tracklist = $response->track_list(); foreach my $track (@tracklist){ # 検索された1曲のデータ print "\n".$track->artist()->name().', '.$track->title()."\n"; my $releases = $track->release_list()->releases(); foreach my $release (@$releases){ # 対象曲の含まれるアルバムのデータ if(!defined($release->type()) && !defined($release->title())){ next; } if(!defined($release->type())){ print ' *****> '.$release->title(); } else{ print " ".$release->type().'> '.$release->title(); } print ", ".($release->track_list()->offset()+1)."/".($release->track_list()->count()+1); print "\n"; # print Data::Dumper->Dumper(\$release); { # 該当アルバムのデータを検索し、含まれる全ての曲を表示する my $ws_album = WebService::MusicBrainz::Release->new(); my $album_response = $ws_album->search({ MBID => $release->id(), INC => 'tracks' }); my $album_tracks = $album_response->release()->track_list()->tracks(); foreach my $album_track (@$album_tracks) { print " ".$album_track->title()."\n"; } } } }
実行結果の例
Sheryl Crow, Soak Up the Sun Album> C'mon, C'mon, 2/15 Steve McQueen Soak Up the Sun You're an Original Safe and Sound C'mon C'mon It's So Easy Over You Lucky Kid Diamond Road It's Only Love Abilene Hole in My Pocket Weather Channel Missing Sheryl Crow, Soak Up the Sun Album> C'mon, C'mon, 2/14 Steve McQueen Soak Up the Sun You're an Original Safe and Sound C'mon C'mon It's So Easy Over You Lucky Kid Diamond Road It's Only Love Abilene Hole in My Pocket Weather Channel Compilation> Bravo: The Hits 2002, Part 1, 13/21 Dreamer Something About Us (Latin radio edit) Perdono Moi... Lolita (single version) Hot in Herre I'm Gonna Be Alright (Track Masters remix) When You Look at Me Hero What If Paid My Dues Nasty Girl In This World (single version) Soak Up the Sun Stillness of Heart (edit) It's Ok! Foolish I'm Not a Girl, Not Yet a Woman Girlfriend