尽管用户有轨道,SoundCloud API仍返回0个轨道

Yin*_*ang 6 soundcloud

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

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

http://api.soundcloud.com/users/1250904?client_id=XXXXXX
Run Code Online (Sandbox Code Playgroud)

如果我试着找到他的曲目,它会返回一个空列表

http://api.soundcloud.com/users/1250904/tracks?client_id=XXXXXX
Run Code Online (Sandbox Code Playgroud)

用户是否可以通过API提供他们的歌曲?用户是否有可以区分的字段?

JAL*_*JAL 3

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

HTTP GET https://api.soundcloud.com/tracks/149151252.json?client_id=XXXXXX
Run Code Online (Sandbox Code Playgroud)

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

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

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

该用户必须启用某些设置才能阻止对其曲目的标准 API 访问。

  • @rifflock 是的,看起来旧的 iOS 密钥不再起作用了。尝试[本期](https://github.com/rg3/youtube-dl/issues/12376) 中的较新密钥之一,或从 SoundCloud 的 app.js 网络播放器中获取它。 (2认同)