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