LuckyPuppy514 / Play-With-MPV

使用 MPV 播放网页中的视频
MIT License
500 stars 14 forks source link

5月9日左右开始无法获取弹幕 B站,大佬可以修复下吗,感谢你 #149

Open PowerDerk opened 1 month ago

PowerDerk commented 1 month ago

5月9日左右开始无法获取弹幕 B站,大佬可以修复下吗,感谢你

verygoodlee commented 1 month ago

弹幕应该去这个仓库提MPV-Play-BiliBili-Comments 已经修复但还没合并 itKelis/MPV-Play-BiliBili-Comments#31

shmilee commented 1 week ago

命令行运行 python ~/.config/mpv/scripts/bilibiliAssert/Danmu2Ass.py 1589890104 ,可以获取弹幕文件 bilibili.ass 直接mpv运行也正常。mpv --ytdl --script-opts-append="cid=1589890104" https://www.bilibili.com/video/BV1D6421Z7Ng/

但是 油猴脚本 这边没把cid传过去。不知道linux自定义播放器如何传cid? 2024-06-27-021800_680x502_scrot

[bilibiliAssert] 弹幕正在上膛
[bilibiliAssert] DEBUG:  Namespace(directory='~/.config/mpv/scripts/bilibiliAssert', size='1365x768', font='sans-serif', 
fontsize=37.0, alpha=0.95, duration_marquee=10.0, duration_still=5.0, filter=None, filter_file=None, protect=576,
 reduce=True, cid=[''])
[bilibiliAssert] Traceback (most recent call last):
[bilibiliAssert]   File "~/.config/mpv/scripts/bilibiliAssert/Danmu2Ass.py", line 519, in <module>
[bilibiliAssert]     main()
[bilibiliAssert]   File "~/.config/mpv/scripts/bilibiliAssert/Danmu2Ass.py", line 513, in main
[bilibiliAssert]     comments = getComments(args.cid,args.fontsize)
[bilibiliAssert]                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
verygoodlee commented 1 week ago

目前自定义播放器没法传cid,代码里写死了,只有mpv会带上cid,自定义播放器不会传 https://github.com/LuckyPuppy514/Play-With-MPV/blob/04a6387b0a0875c36249d5f336a0f4db3a09cf8f/play-with-mpv.user.js#L2022-L2028 不是很理解你为啥mpv还要自定义,没啥必要吧

shmilee commented 1 week ago

因为MPV是只考虑了windows平台,即使是设置path=/usr/bin/mpv, 都会修改为mpv.exe。Linux平台只能自定义 https://github.com/LuckyPuppy514/Play-With-MPV/issues/124

本来 MPV-Play-BiliBili-Comments 配合 ytdl可以自动获取cid的, 但这里的脚本传过去的视频地址不是原始的(如下 BV1Tw4m1q7fP),然后main.lua 的 获取 path 也不包含 bilibili.com,所以cid就无法自动找到了?估计是这样。

$ mpv https://www.bilibili.com/video/BV1Tw4m1q7fP                   

[bilibiliAssert] path=https://www.bilibili.com/video/BV1Tw4m1q7fP, **cid=1570715185**
[bilibiliAssert] 弹幕正在上膛
AO: [pulse] 48000Hz stereo 2ch float
VO: [gpu] 852x480 => 853x480 yuv420p
[bilibiliAssert] DEBUG:  Namespace(directory='~/.config/mpv/scripts/bilibiliAssert', size='2044x1152', font='sans-serif', 
fontsize=37.0, alpha=0.95, duration_marquee=10.0, duration_still=5.0, filter=None, filter_file=None, protect=864, reduce=True, 
cid=['1570715185'])
[bilibiliAssert] 开火

Linux 下一个弹幕成功的方案: 416271-play-with-mpv(获取 mpv-debug://play/XXXX/?cookies=www.bilibili.com.txt) -> mpv-handler (处理 mpv:// 或 mpv-debug://) -> mpv https://www.bilibili.com/video/BVXXXX (配合 ytdl 和 bilibiliAssert 自动加载弹幕) DEBUG输出:

mpv-debug://play/aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvL0JWMVI0NDIxRDdhNS8_c3BtX2lkX2Zyb209MzMzLjEwMDcudGlhbm1hLjUtMi0xNS5jbGljayZ2ZF9zb3VyY2U9MTk2YWQxMDY0ZWMwYzU1ZGNiMjQ5MmUxZGM2ZjFjNWM/?cookies=www.bilibili.com.txt

Playing: https://www.bilibili.com/video/BV1R4421D7a5/?spm_id_from=333.1007.tianma.5-2-15.click&vd_source=196ad1064ec0c55dcb2492e1dc6f1c5c
 (+) Video --vid=1 (*) (hevc 1920x1080 25.000fps)
 (+) Audio --aid=1 (*) (aac 2ch 48000Hz)
     Subs  --sid=1 --slang=ai-zh 'srt' (null) (external)
     Subs  --sid=2 --slang=danmaku 'xml' (null) (external)
File tags:
 Description: Packed by Bilibili XCoder v2.0.2
 Uploader: 爱音乐的三丈
Track removed:
 (+) Video --vid=1 (*) (hevc 1920x1080 25.000fps)
 (+) Audio --aid=1 (*) (aac 2ch 48000Hz)
     Subs  --sid=1 --slang=ai-zh 'srt' (null) (external)
[bilibiliAssert] path=https://www.bilibili.com/video/BV1R4421D7a5/?spm_id_from=333.1007.tianma.5-2-15.click&vd_source=196ad1064ec0c55dcb2492e1dc6f1c5c, cid=1587377545
[bilibiliAssert] 弹幕正在上膛
AO: [pulse] 48000Hz stereo 2ch float
VO: [gpu] 1920x1080 yuv420p
[bilibiliAssert] DEBUG:  Namespace(directory='~/.config/mpv/scripts/bilibiliAssert', size='2048x1152', font='sans-serif', 
fontsize=37.0, alpha=0.95, duration_marquee=10.0, duration_still=5.0, filter=None, filter_file=None, protect=864, reduce=True,
cid=['1587377545'])
[bilibiliAssert] 开火
Track added:
 (+) Video --vid=1 (*) (hevc [Main] 1920x1080 25.000fps)
 (+) Audio --aid=1 (*) (aac [LC] 2ch 48000Hz)
     Subs  --sid=1 --slang=ai-zh 'srt' (null) (external)
     Subs  --sid=2 'bilibili.ass' (ass) (external)