【问题标题】:SoundCloud API returning 0 tracks despite user having tracks尽管用户有曲目,SoundCloud API 返回 0 首曲目
【发布时间】:2015-11-02 19:31:44
【问题描述】:

我正在尝试获取特定用户的曲目,但对于某些用户,即使他们有曲目,SoundCloud API 也会返回一个空列表。

例如,您可以从他的track_count 看到以下用户有 17 首曲目

http://api.soundcloud.com/users/1250904?client_id=XXXXXX

如果我尝试获取他的曲目,它会返回一个空列表

http://api.soundcloud.com/users/1250904/tracks?client_id=XXXXXX

用户是否可以通过 API 使他们的歌曲不可用?用户上有没有可以区分这个的字段?

【问题讨论】:

标签: soundcloud


【解决方案1】:

这很有趣。使用我自己生成的普通 CLIENT_ID,我会得到与您相同的结果。此外,如果我尝试访问 API 以获取有关特定曲目的信息,我会收到 403 Forbidden 错误:

HTTP GET https://api.soundcloud.com/tracks/149151252.json?client_id=XXXXXX

发生这种情况可能有几个原因:

  1. 用户已达到其所有曲目的下载限制。
  2. 用户已禁用 oEmbed,导致 API 请求为 403(请参阅 this post)。
  3. 用户以某种方式设法阻止了对其音轨的正常 API 访问。

我在这里倾向于选择 3。我已经对this question 中的其他一些 CLIENT_ID 进行了一些测试,尝试使用 youtube-dl 应用程序使用的 CLIENT_ID。使用他们的_IPHONE_CLIENT_ID,我可以看到所有 17 首曲目的信息。如果我对该密钥的理解是正确的,那么它就是 SoundCloud 用于其 iOS 应用程序的主 API 密钥,这可以解释为什么该密钥有效而其他密钥无效。

此用户必须启用某些设置才能阻止标准 API 访问他们的曲目。

【讨论】:

  • 这是一个非常有趣的发现。我只是希望_IPHONE_CLIENT_ID 也能长期有效。
  • 我应该注意到,使用其他人的 API 密钥或对其端点进行逆向工程是违反 SoundClould 的 TOS 的。因此,您不想为您的应用程序依赖其他人的 API 密钥。
  • 我知道这在这一点上有点老了,但我已经用 Soundcloud 的 API 解决了这个问题,并且 _IPHONE_CLIENT_ID 不再有效(并且不是真正可行的解决方案)。我使用 Soundcloud 帐户进行了一些测试,但我找不到允许曲目显示在 UI 中但不能显示在 API 返回中的隐私设置组合。我也发邮件给 api@soundcloud.com,但没有收到回复。我想你们中的任何人都没有找到不同 API 密钥访问级别的文档吗?
  • @rifflock 是的,看起来那个旧的 iOS 密钥不再工作了。尝试this issue 中较新的密钥之一,或从 SoundCloud 的 app.js 网络播放器中获取。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 2013-02-18
  • 2013-03-21
  • 1970-01-01
相关资源
最近更新 更多