是不是可以给更新列表歌曲url地址的接口呢
Opened this issue · 13 comments
有时候歌曲链接会失效,需要接口更新播放url,是不是可以更丰富点呢
- cplayer.add(item: IAudioItem) 添加歌曲。
- cplayer.remove(item: IAudioItem) 删除歌曲。
能不能满足你的需求?
有时候歌曲链接会失效,需要接口更新播放url
失效时间不确定,所以最好的办法就是播放时更新URL
add&remove方法的话,如下所示
Lines 3 to 11 in 22abb44
会导致多余的请求(当然静态资源会被缓存)以及列表内顺序改变。
Update:
没插入的图片并不会产生多余请求...而如果之前在内存里缓存了除src以外的属性,是不需要再请求这些属性的...
所以会导致多余请求这句不是正确的...
我给个建议,可以利用生成器函数暂停播放的过程,然后通过ajax/fetch请求与处理得到歌曲url,为list内该音乐的src赋值,然后启动播放过程。
这个过程只需要暴露给用户一个callback与一个暴露变量(属性),监控该属性,当赋值时自动进行接下来的动作。callback的目的是对该变量(属性)赋值...
或者提供一个src的修改方法,用来代替被监控的暴露变量(属性)
为什么会突然失效呢?
@EYHN 比如网易云音乐的歌曲直链,25分钟后就会失效,其它平台应该也有类似设定。
把src写成一个function如何?
@journey-ad 建议尝试一下jad的网易云音乐api,进而理解该api是如何避免该问题得到
额不对你是jad
比如说
function abc(next){
fetch(xxx).then(()=>next())
}
let player = new cplayer({
playlist: [
{
src: () => { return fetch(xxx).then((res)=>res.text()) }
}
]
})
我的意思是这样,然后每次都重新执行函数来获取src。
播放下一首的时候给一个回调方法,允许修改列表除了现在播放的歌曲外的其他歌曲的信息,包括封面、歌曲链接等
0 0 你们都是大佬...
为什么不试试 302 呢?
比如: https://api.a632079.me/nm/redirect/music/477839635