开发者

Understanding the type of out put from Musicbrainz cpan module?

Im using the Musicbrainz cpan module to look up an album but Im having a few issues trying to decipher the output I recieve. I used data::Dumper to have a look at it, and it appears to be a hash or array of some sort but when I try to check the type I run into problems.

my $ws = WebService::MusicBrainz::Release->new();

my $response = $ws->search({ TITLE => 'ok computer' });


if (ref($response) eq "REF" || ref($response) eq "SCALAR" ||开发者_运维知识库 ref($response) eq "ARRAY" || ref($response) eq "HASH" || ref($response) eq "CODE" || ref($response) eq "GLOBE")

 {
 print "\n What sort of thing is it? \n";
 }

Thanks


It's a WebService::MusicBrainz::Response object.

use WebService::MusicBrainz::Release;

my $ws = WebService::MusicBrainz::Release->new();
my $response = $ws->search({ TITLE => 'ok computer' });
my $release = $response->release(); # grab first one in the list
print $release->title(), " (", $release->type(), ") - ", $release->artist()->name(), "\n";


Like already said, it is a WebService::MusicBrainz::Response object. You can retrieve multiple results with accessing the release_list() which gives an array of WebService::MusicBrainz::Response::Release objects.

use WebService::MusicBrainz::Release;

my $ws = WebService::MusicBrainz::Release->new();
my $response = $ws->search({ TITLE => 'ok computer' });

my @releaselist = $response->release_list();
foreach my $release ( @releaselist ) {
  print $release->title(), " - ", $release->artist()->name(), "\n";
}

However, that perl module is somewhat unmaintained and the XML Web service Version 1 it is using is deprecated.

You better use Version 2 of the Web Service. With python-musicbrainzngs there is a python module available that uses the new (next generation scheme) Web Service.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜