Понимание типа выхода из модуля Musicbrainz cpan? - PullRequest
0 голосов
/ 20 марта 2011

Я использую модуль Musicbrainz cpan для поиска альбома, но у меня возникли некоторые проблемы при попытке расшифровать вывод, который я получаю. Я использовал data :: Dumper, чтобы взглянуть на него, и он выглядит как какой-то хэш или массив, но когда я пытаюсь проверить тип, у меня возникают проблемы.

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";
 }

Спасибо

Ответы [ 2 ]

2 голосов
/ 20 марта 2011

Это WebService :: MusicBrainz :: Response объект.

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";
0 голосов
/ 16 декабря 2012

Как уже говорилось, это WebService :: MusicBrainz :: Response объект. Вы можете получить несколько результатов с помощью функции release_list (), которая дает массив объектов WebService :: MusicBrainz :: Response :: Release .

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";
}

Однако этот модуль perl несколько не поддерживается, и используемая им веб-служба XML версии 1 устарела.

Вам лучше использовать Версия 2 веб-службы. С python-musicbrainzngs доступен модуль python, который использует новую веб-службу (схема следующего поколения).

...