首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl:如何从MusicBrainz中检索相册元数据?

Perl:如何从MusicBrainz中检索相册元数据?
EN

Stack Overflow用户
提问于 2012-10-22 00:28:46
回答 2查看 2.6K关注 0票数 3

我正在创建一个Perl脚本,它将以artist/album/mp3file格式将一个mp3文件移动到我的音乐文件夹中。现在,我的一些mp3文件可能没有album tag,所以我想通过查询MusicBrainz数据库来检索给定track title & artist的相册元数据。

我使用了WebService::MusicBrainz Perl模块来完成这个任务,但是我看不到任何提供相册元数据信息的方法。我当前的代码是:

代码语言:javascript
复制
use WebService::MusicBrainz::Track;

my $ws = WebService::MusicBrainz::Track->new();
my $response = $ws->search({ ARTIST => 'Ryan Adams', TITLE => 'when the stars go blue'  }); 

my $track = $response->track();
print $track->title(), " - ", $track->artist()->name(), "\n";

say $track->id();

那么,我如何使用MusicBrainz获取给定曲目的专辑信息?如果不可能,我还有什么替代方案?

EN

回答 2

Stack Overflow用户

发布于 2012-12-16 08:42:12

首先,您想要的是向mp3s添加元数据,这是人们最常见的使用场景。“正常”的方法是使用Musicbrainz标记器,在那里打开这些文件,并使用界面附加正确的元数据。建议的(gui)工具是Musicbrain Picard

我还想说明的是,Perl模块使用的是现已弃用的MusicBrainz Web Service Version 1。该Web Service有几个问题,因为它是为另一个数据库方案创建的,而不是现在MusicBrainz使用的数据库方案。

然而,当前的Web Service Version 2只有一个可用的python库:python-musicbrainzngs

您仍然可以使用Perl模块,但是如果您遇到“奇怪的”问题,这可能是原因。

这就是Web服务的一般工作方式(以及如何将其直接应用于作为此web服务的包装器的Perl模块):您的搜索结果如下:

http://musicbrainz.org/ws/1/track/?artist=%22Ryan%20Adams%22&title=%22when%20the%20stars%20go%20blue%22

在这里,您可以获得该曲目的录音列表。这些记录发生在多个版本(ReleaseList)上。您可以忽略其中的许多类型,因为它们属于“编译”类型。你可能想要发行“专辑”。

你可能会问自己,为什么列表中有多个同名的专辑发行。这是因为MusicBrainz上的“发布”是一个发布事件和一些媒体的组合。你可能有一个美国版本和一个德国豪华版,等等。所有这些版本都在一个“发布组”中。

您可能想要这个“版本组”的名称,它通常也是这个组中每个版本的名称。

您可能想要阅读一些关于MusicBrainz Database结构的内容。

当然,这只是基本的用例。你可能会在艺术家/标题中遇到拼写错误,多个或缺少专辑发行组和其他东西。但是,总的来说,它应该是有效的,您可以只将“问题”案例放在一个特殊的目录中,并在Picard中处理它们。Picard也有其他方法来识别每个“音乐分析”(PUID,Acoustids)的文件。

编辑:

代码语言:javascript
复制
my @tracklist = $response->track_list();
foreach my $track ( @tracklist ) {
  print $track->title(), " - ", $track->artist()->name(), "\n";
  my @releaselist = $track->release_list();
  foreach my $release ( @releaselist ) {
    print "  ", $release->title(), " - ", $release->type();
  }
}

它给出了响应的所有轨迹,但不知何故不能从release_list()中提取释放。可能是因为模式发生了更改,或者是因为perl模块损坏了。

票数 5
EN

Stack Overflow用户

发布于 2012-10-22 03:18:02

查看我们用于访问封面艺术档案的perl模块:

http://metacpan.org/pod/Net::CoverArtArchive

更多关于我们档案的信息在这里,包括规格:

http://coverartarchive.org/

祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12999750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档