【问题标题】:Using APIs to Filter Albums by Years使用 API 按年份过滤专辑
【发布时间】:2013-01-18 16:01:46
【问题描述】:

所以我正在开发一个应用程序,该应用程序具有使用 Echo Nest API 生成与用户音乐目录中的艺术家类似的 100 位左右艺术家列表的功能。然后,用户可以提供某一年,并且基于相似的艺术家,应用程序将返回该年发行的专辑列表。

唯一的问题是我不知道如何根据年份过滤专辑。 Echo Nest API 对专辑的作用并不大。 Discogs 和 Last.fm API 可用于专辑,Discogs API 有关于专辑发行日期的数据,但无法按发行日期过滤初始查询。例如,如果我有艺术家 Fleet Foxes,并且我想按 2011 年发行的专辑对其进行过滤,则无法搜索 Fleet Foxes 发行日期为 2011 年的专辑。

此时我真正能看到的唯一选择是迭代艺术家拥有的每张专辑,并且只添加符合我要求的专辑。但是,这显然对 API 和我的服务器来说都非常繁重,尤其是考虑到 100 个相似艺术家列表中的许多艺术家没有符合我标准的专辑,而且许多艺术家的专辑都在 100 个范围内。你会考虑单曲、混音等。

有没有人看到更好的方法?

【问题讨论】:

  • 这与 Java 或 Python 有什么关系?
  • 抱歉,当时正处于计划阶段,并且可以使用这两种语言中的任何一种,所以我想我应该将它们包括在内。我会把它们拿出来。

标签: api discogs-api


【解决方案1】:

如果一个 API 真的没有办法按年份过滤,那么是的,当然你必须拉下所有版本并在事后过滤它们。

如果您认为这对您的代码和/或其服务器造成了负担,则应提交功能请求以添加过滤。

但是,您应该首先确保他们确实没有提供这样的东西。大多数 REST API 将“获取”和“搜索”分开。比如http://api.example.com/artists/12345/releases可能没有办法过滤,但http://api.example.com/search?type=releases&artist=12345&year=2011可能存在。

在不详细查看所有 API 的情况下,快速查看 Discogs 的 "Run a search query" 文档表明您可以在搜索中包含 year 标准(尽管看起来您可能实际上无法按艺术家搜索ID,仅按艺术家姓名?)。

【讨论】:

  • 你完全正确。您可以使用 HTTP 请求使用 search 而不是 fetch 按年份进行搜索。不幸的是,我使用的是 Python,他们的客户端库不提供这个。但是,快速调整 Search 类和他们使用 requests 库进行的调用可能会纠正这个问题。如果可行,我将使用解决方案编辑我的帖子。
  • 我相信 Discogs 和 last.fm 都已经开源了他们的客户端库,至少 Python 是非常简单的纯 Python 网络服务包装器。因此,如果缺少可以轻松添加的功能,我会提交错误并提交补丁。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多