如何在不每秒调用太多次的情况下通过Soundcloud解析api进行循环
How to loop over Soundcloud resolve api without calling too many times per second?
我有一组soundcloud音轨url,我需要为其获取流媒体url(称为stream_url)。我知道resolve允许您只使用一个url来调用api并获取其信息(它在json中返回stream_url)。
如何循环遍历曲目url列表以返回每个曲目的stream_url?我该如何做到这一点,以免他们的服务器被过多的api调用所淹没?我有一长串的跟踪网址。
除非有令人信服的理由不这样做,否则只在用户需要数据之前进行昂贵的API调用。因此,如果您有一个列表,并且不需要结果,除非用户尝试流式传输曲目,那么只需调用API作为"加载"的一部分,并在初始启动滞后时间内将其打包。
如果出于某种原因,您总是需要每个值,那么您应该限制调用,一次只加载几个。例如,也许你加载了5个,等待它们完成,然后再加载下一个5。
这取决于开始时的输入。既然你说你在使用解析api,我假设你有几个轨道的永久链接,例如:
https://soundcloud.com/someuser/sometrack
https://soundcloud.com/anotheruser/anothertrack
我建议做的是将每个url解析一次并存储结果。并非所有字段都将永远有效(也就是说,作者可能会更改曲目的标题或其他什么,播放次数很快就会过期,等等),但你会得到固定的曲目id。
从那里,您实际上可以自己构造stream_url
,因为它是一种固定格式:https://api.soundcloud.com/tracks/:id/stream
。只要把id代入每一个,你就离开了。
如果你沿着这条路走下去,只需要每个轨道的id,你甚至可以在使用解析端点时提高效率,方法是不遵循302,而是从返回的位置解析id:
curl https://api.soundcloud.com/resolve'?url'=http://soundcloud.com/forss/flickermood'&client_id'=YOUR_CLIENT_ID
{"status":"302 - Found","location":"https://api.soundcloud.com/tracks/293?client_id=YOUR_CLIENT_ID"}
在这里,您可以看到它解析为id为293的track。
相关文章:
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 使用JQuery解析JSON嵌套数组
- 可以简化嵌套的延迟Q Promises解析吗
- 我的模板未被解析
- 如何在Javascript中解析AJAX数组的特定部分
- 主干集合重置和解析
- 解析javascript表单验证器
- 可以't使用Angular解析/检索JSON
- 如何使用Node.js最有效地解析网页
- 当json解析空响应时,Whatwg-Fetch失败,我该如何防止它
- 可以't使用Appcelerator将JSON文件解析为JavaScript中的TableView
- 解析JSON并从中删除对象会出错
- jquery创建的数据-*有时无法解析
- 延期承诺值未更新/解析/延期
- [Vue warn]:未能解析组件
- 在解析对象.save()中;没有返回任何原因
- 测试角度解析方法
- 对象未在Javascript中进行字符串化和解析
- 如何在不每秒调用太多次的情况下通过Soundcloud解析api进行循环
- 如何使用Soundcloud Javascript SDK进行解析