当前位置: 首页 > 知识库问答 >
问题:

按艺术家id筛选来自浏览发布组的结果,以获得目录、python

马宜民
2023-03-14

我正在为不同的艺术家检索唱片。维基百科和MusicBrainz.org的手动网络界面似乎就我所检查的艺术家的专辑组成达成了一致。我的第一个想法是尝试筛选这些资源中的任何一个,但这看起来很难做到。

直接查询musicbrainz数据似乎提供了获取干净数据的更快方法。我会理想地构造一个这样的请求。。。

data = get_release_groups(artist=mbid,
                          primary_type='Album',
                          status='Official',
                          includes=['first_release_date',
                                    'title',
                                    'secondary_type_list'])

我选择了使用python包装音乐大脑sngs,因为我对python相当有经验。它给了我三种方法的选择,get_、search_和browse_。Get_不会返回足够的记录。Browse_似乎是我想要的,所以我先尝试了一下,尤其是search_是在python示例中查找文本,而不是我已经有的mb_id。

当我做browse_release_groups(艺术家=artist_id,,,)时,我得到了一个发行组列表,每个组包含我想要的数据,即专辑标题、类型和年份。然而,我也得到了大量其他发布组,这些组没有出现在他们的手动网络结果中(例如滚石乐队)https://musicbrainz.org/artist/b071f9fa-14b0-4217-8e97-eb41da73f598

在status='official'的查询中,似乎没有任何方法进行筛选,也没有任何方法将状态作为结果的一部分包含在内,以便我可以手动筛选。

为了回答这个问题,Wieland建议我使用搜索查询。我已经测试了search\u release\u组(andry=mbid,status='official',primarytype='Album',strict=True,limit=…),这将返回更少的发布组。就录音室专辑而言,它符合1:1。汇编中还有一些小的差异,我可以接受。然而,这个查询并没有返回第一个发布日期,到目前为止,我一直无法找到如何包含它。我注意到在链接到的服务器搜索代码中,每个查询都是从操作rgm.first\u release\u date\u year等开始的,但不清楚如何/何时从查询中返回。

我突然想到,我可以同时使用browse_和search_,因为它们一起给了我所有的信息。所以我有一个工作,但感觉相当农业。

TL;DR I需要按艺术家ID列出发布组(标题、日期、类型、状态)。如果我浏览,我会得到日期,但不能按状态包含或筛选。如果我搜索,我可以按状态筛选,但不获取日期。如何在一个查询中同时获得这两个结果?

共有1个答案

毛成济
2023-03-14

我不完全确定你的问题是什么,但是发布组的find_by_artist方法(源在这里)是什么在为艺术家页面过滤发布组,特别是:

     # Show only RGs with official releases by default, plus all-status-less ones so people fix the status
    unless ($show_all) {
    push @$conditions, "(EXISTS (SELECT 1 FROM release where release.release_group = rg.id AND release.status = '1') OR
                        NOT EXISTS (SELECT 1 FROM release where release.release_group = rg.id AND release.status IS NOT NULL))";
    }

不幸的是,我认为在正常的网络服务调用中不可能表达这种情况。但是,您可以使用搜索Web服务来筛选包含至少一个"官方"版本的滚石发布组:http://musicbrainz.org/ws/2/release-group/?query=arid:b071f9fa-14b0-4217-8e97-eb41da73f598 AND状态:官方

search_release_groups(arid="b071f9fa-14b0-4217-8e97-eb41da73f598", status="official", strict=True)

不幸的是,搜索结果不包括第一次发布日期字段。这是一个公开的问题,但在不久的将来不会得到解决。

 类似资料:
  • 我想找一位艺术家和他们的专辑。所以读这一页https://musicbrainz.org/doc/Development/XML_Web_Service/Version_2 我创建了以下查询以获取Michael Jackson的专辑 我的理解是在URL末尾添加,该URL应返回迈克尔·杰克逊的专辑,但这似乎没有返回正确的结果,或者我无法缩小结果范围?然后我想使用,但是在美术师查询中没有返回(这就是为

  • 最初的计划是把这写成一篇博客文章,标题是“Spotify元数据应用编程接口的低效:或者,杰克逊5是如何杀死我的浏览器的”,但在最后一刻改变了主意,因为我有一个习惯,就是错过留档中显而易见的东西,也许是一个未记录的功能可能存在,我错过了,或者其他人已经解决了这个问题-因此这个问题有一定的博客帖子语气! 我正在开发一个小型网络应用程序,主要是为一小群人开发的,它允许任何人更新Spotify播放列表。因

  • 嗨,我有问题,我需要做的任务。我在SQL中有一个表,其中显示了用户日志(子用户)以及添加时间戳、执行的操作和订户名称的触发器,如下所示: 表:audit_subscibers 现在我需要创建一个视图,仅显示已删除删除时间和插入时间的订阅者(名称),以实现这样的事情: 添加了约翰(像其他成员一样),但也删除了beed,而不是触摸只有插入的成员 如何做到这一点,只需要潜意识 我还有另一个类似的任务,但

  • 我可以通过调用这个网址查看Spotify上的所有曲目: http://ws.spotify.com/search/1/track.json?q=xxx 示例响应包含每个曲目的艺术家数据,如: 从上面的响应中,我得到了艺术家ID:38IfmizrHTCxFjd8UKhWnp。 现在,有没有一种方法可以通过api调用获得上述艺术家(38IfmizrHTCxFjd8UKhWnp)的所有曲目? 我想做的是

  • 原文:Artist tutorial matplotlib API 有三个层级。 matplotlib.backend_bases.FigureCanvas是绘制图形的区域,matplotlib.backend_bases.Renderer是知道如何在ChartCanvas上绘制的对象,而matplotlib.artist.Artist是知道如何使用渲染器在画布上画图的对象。 FigureCanv

  • 我使用musicbrainz.orgpostgresql数据库,我已经安装在本地,并通过python访问。 如何创建一个SQL查询来输出发布组的所有跟踪?我能够获得与特定乐队相关的适当艺术家信息和发行版,但使用以下查询,发行版的曲目是错误的: 任何帮助都将不胜感激,我已经为此绞尽脑汁好几个小时了。