SoundCloud API - "same song"限制?/ 403问题?



我刚刚更新了我的一个旧网页(最初创建于2014年(,该网页使用SoundCloud API直接从SoundCloud播放一些背景音乐(见 https://www.wothke.ch/ablaze/#/wright-and-bastard/venera(。我有一个针对相应 API 的 SoundCloud client_id - 我的实现在过去运行良好:默认情况下,页面始终使用相同的歌曲 - 尽管用户可以将相应的永久链接添加到 URL 以播放特定的 SoundCloud 歌曲或播放列表。

在将我的旧页面迁移到 WEBGL2 和 ECMAScript 2015 时,我反复重新加载了我各自的页面,我注意到以下烦人的效果:

起初,页面播放默认歌曲没有任何问题,但是经过一些页面重新加载(我猜不到10(,SoundCloud似乎突然切换到"403禁止"错误..如果然后通过URL专门选择了不同的歌曲,那么该歌曲起初再次播放正常,但是经过一些重新加载该歌曲的响应后,该歌曲也突然切换到"403禁止"。似乎即使在一天后,"被阻止"的歌曲仍处于"禁止"状态。

看起来SoundCloud"现在"可能会对一个客户端(client_id(在给定时间间隔内加载同一首歌曲的最大次数使用某种限制。(对于对所有访问者使用相同的技术client_id的页面,各自的限制可能会非常严重。

任何想法(有这样的限制吗,到底是什么(?

似乎是一个f%&!&#缓存问题。SoundCloud重定向 流网址(例如https://api.soundcloud.com/tracks/511301766/stream?client_id=[my app ID]( 到实际托管文件的某个亚马逊服务器(例如https://cf-media.sndcdn.com/AT5qm8ZFmiM0.128.mp3?Policy=[some id]&Signature=[some sig]&Key-Pair-Id=[some id](。

相应的"亚马逊"URL似乎以"签名"参数的形式带有某种到期日期。出于某种原因,我的基于 CURL 的 PHP 脚本不断拾取转发 URL 的旧过期版本(即第一个"流"响应必须已被缓存,因此每个新 URL 将工作一段时间直到过期......我通过向"流 URL"动态添加虚拟时间戳参数来解决此问题。

最新更新