gpt4 book ai didi

Perl:如何从 MusicBrainz 检索专辑元数据?

转载 作者:行者123 更新时间:2023-12-04 02:15:08 24 4
gpt4 key购买 nike

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

我正在使用 WebService::MusicBrainz此任务的 Perl 模块,但我看不到任何提供专辑元数据信息的方法。我当前的代码是:

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 获取给定轨道的专辑信息,如果不可能,我还有哪些替代选择?

最佳答案

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

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

但是,当前Web Service Version 2只有一个 python 库可用:python-musicbrainzngs .

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


Web 服务通常是这样工作的(以及它应该如何直接应用于 Perl 模块作为此 Web 服务的包装器):您的搜索给出了这个:

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)识别文件的方法


编辑:

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 模块已损坏。

关于Perl:如何从 MusicBrainz 检索专辑元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12999750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com