yihong0618 / MiService

XiaoMi Cloud Service for mi.com
MIT License
351 stars 90 forks source link

获取不到歌曲播放时长问题 #34

Closed hanxi closed 4 months ago

hanxi commented 4 months ago
  1. 目前的写法只支持 mp3 格式。
  2. 这个链接 https://m10.music.126.net/20240626132818/150ef0d02b16497727218fbc4046e46c/ymusic/5353/0f0f/0358/d99739615f8e5153d77042092f07fd77.mp3 的歌曲会取不到播放时长,但是下载到本地又是可以获取到播放时长的,只需要下载前 500 字节。
  3. 我参考你的写法重新写了一版,写入临时文件后不删除临时文件,用临时文件的路径做参数,获取完文件播放时长后再删除临时文件。代码见 https://github.com/hanxi/xiaomusic/blob/8bd32f878fda4c7a6d36e34738f6cbf872deed85/xiaomusic/utils.py#L169-L198
  4. 没去研究为什么传文件对象获取不到,可能有别的解法。
  5. 是否需要提个 pr 把修改的函数合并过来呢?
hanxi commented 4 months ago

上面的 mp3 链接是这个 http://music.163.com/song/media/outer/url?id=447925558.mp3 经过 302 跳转拿到的,直接用这个会返回 json ,也没搞明白为啥。

yihong0618 commented 4 months ago

我下午先研究下

yihong0618 commented 4 months ago

@hanxi 你第一个链接 chrome 也拿不到时长好像。

hanxi commented 4 months ago

Screenshot_2024-06-26-16-21-50-865_com android chrome

我这手机 chrome 上是能显示播放时长的

yihong0618 commented 4 months ago

Screenshot_2024-06-26-16-21-50-865_com android chrome

我这手机 chrome 上是能显示播放时长的

我的问题。。。

yihong0618 commented 4 months ago

Screenshot_2024-06-26-16-21-50-865_com android chrome 我这手机 chrome 上是能显示播放时长的

我的问题。。。

不是我的问题,换了几个环境浏览器都无法播放

yihong0618 commented 4 months ago

必须走跳转才行。。。

hanxi commented 4 months ago

啥?没理解

yihong0618 commented 4 months ago

https://m10.music.126.net/20240626132818/150ef0d02b16497727218fbc4046e46c/ymusic/5353/0f0f/0358/d99739615f8e5153d77042092f07fd77.mp3 这个 url 啥也没有 必须访问 http://music.163.com/song/media/outer/url?id=447925558.mp3 才能拿到一个新的 url

这个新的 url 会过期

hanxi commented 4 months ago

确实过期了,你可以用新的 url 测试。只是没搞明白为啥浏览器能拿到跳转的url,代码里却拿不到,难道是防爬的风控?

yihong0618 commented 4 months ago

不是。。。我解决了你看看。

yihong0618 commented 4 months ago

@hanxi 用最新的 commit 试试

hanxi commented 4 months ago

可以了,谢谢