cPlayer icon indicating copy to clipboard operation
cPlayer copied to clipboard

是不是可以给更新列表歌曲url地址的接口呢

Open pengdyzhou opened this issue 7 years ago • 13 comments

有时候歌曲链接会失效,需要接口更新播放url,是不是可以更丰富点呢

pengdyzhou avatar Aug 19 '17 13:08 pengdyzhou

  • cplayer.add(item: IAudioItem) 添加歌曲。
  • cplayer.remove(item: IAudioItem) 删除歌曲。

能不能满足你的需求?

EYHN avatar Aug 25 '17 04:08 EYHN

有时候歌曲链接会失效,需要接口更新播放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的修改方法,用来代替被监控的暴露变量(属性)

Copay avatar Aug 25 '17 06:08 Copay

为什么会突然失效呢?

EYHN avatar Aug 26 '17 10:08 EYHN

@EYHN 比如网易云音乐的歌曲直链,25分钟后就会失效,其它平台应该也有类似设定。

journey-ad avatar Aug 26 '17 11:08 journey-ad

把src写成一个function如何?

EYHN avatar Aug 26 '17 11:08 EYHN

@journey-ad 建议尝试一下jad的网易云音乐api,进而理解该api是如何避免该问题得到

Copay avatar Aug 26 '17 11:08 Copay

额不对你是jad

Copay avatar Aug 26 '17 11:08 Copay

@EYHN fetch是一个异步过程/ajax同样也是一个异步过程.

https://github.com/MoePlayer/cPlayer/blob/22abb44e6f8f4379bce473e271c1cccede31cd61/src/lib/index.ts#L151-L156

修正src的方法

把emit注入到该function的回调末尾即可

Copay avatar Aug 26 '17 12:08 Copay

比如说

function abc(next){
    fetch(xxx).then(()=>next())
}

Copay avatar Aug 26 '17 12:08 Copay

let player = new cplayer({
  playlist: [
    {
      src: () => { return fetch(xxx).then((res)=>res.text()) }
    }
  ]
})

我的意思是这样,然后每次都重新执行函数来获取src。

EYHN avatar Aug 26 '17 13:08 EYHN

@EYHN 你那样会返回一个Promise,你需要在返回的Promise继续进行剩下来操作.在得到数据之前,对src的赋值过程是暂停的

Copay avatar Aug 26 '17 13:08 Copay

播放下一首的时候给一个回调方法,允许修改列表除了现在播放的歌曲外的其他歌曲的信息,包括封面、歌曲链接等

pengdyzhou avatar Aug 30 '17 06:08 pengdyzhou

0 0 你们都是大佬... 为什么不试试 302 呢? 比如: https://api.a632079.me/nm/redirect/music/477839635

a632079 avatar Feb 20 '18 06:02 a632079