Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

弹幕源添加新弹幕的一些疑问 #26

Closed
wan0ge opened this issue Oct 16, 2024 · 14 comments
Closed

弹幕源添加新弹幕的一些疑问 #26

wan0ge opened this issue Oct 16, 2024 · 14 comments
Labels
enhancement New feature or request

Comments

@wan0ge
Copy link

wan0ge commented Oct 16, 2024

虽然是弹弹Play的extcomment接口但似乎不支持本地弹幕的加载?还是说这其实是两个部分两个功能

直接网址获取的弹幕和api获取的数量上是一样的,新番的新弹幕都有很久的延迟才会被接口/API同步,,不过这是弹弹接口的问题也解决不了,但弹弹的本地弹幕加载能解决这个问题,找个脚本把弹幕下下来再ass转换成xml就能加载当前时段所有弹幕
还是希望兼容一下加载本地弹幕解决这个问题,不然追番弹弹这个api延迟挺难受的,或者有没有考虑重新写一个从网站加载弹幕()都从网站加载了获取的竟然不是当前时段的全部弹幕这也太难受了
ass弹幕文件直接拖进mpv是能够以外挂字幕形式加载的,但是样式和开关不受uosc_danmaku控制,所以也不太好用
(是的我是完全编程小白发现网址获取的弹幕也不是全部的之后连夜用gpt写了个ass转xml py脚本自己下弹幕然后发现uosc_danmaku竟然不能加载(悲))

@Tony15246
Copy link
Owner

Tony15246 commented Oct 17, 2024

还是说这其实是两个部分两个功能

从弹幕源添加弹幕功能加载本地弹幕功能是两个独立的功能。是我写的有问题,容易引起误会,应该写成从网络弹幕源添加弹幕功能。加载本地弹幕功能可以通过配置项中的以下选项开启

autoload_local_danmaku=yes

开启这个功能后,uosc_danmaku会读取和本地视频文件同级目录下的xml弹幕文件并自动加载,比如以下这种情况下,一个文件夹下有这些文件

深夜 Punch [1].mp4
深夜 Punch [1].xml

如果打开了autoload_local_danmaku选项,uosc_danmaku会在播放深夜 Punch [1].mp4时自动加载深夜 Punch [1].xml

@wan0ge
Copy link
Author

wan0ge commented Oct 17, 2024

草,是我当时漏看了根本没看到这个配置项,我就说我怎么有点印象可以添加本地,以为是DanmakuFactory项目可以
但是这功能还是有点限制,比如播放不由自己控制的网络源就没法加载,如果还能直接把xml文件拖进去加载就好了

@Tony15246
Copy link
Owner

对了,我上面忘记说了,autoload_local_danmaku功能自动关联的是与视频同名的.xml文件。

如果还能直接把xml文件拖进去加载就好了

拖文件自动加载应该是mpv应用层面的行为,插件如何拦截拖进mpv进行加载的文件并覆盖mpv的默认处理逻辑,我一下子没想到要怎么实现。有人有想法的话,可以给我一些建议或者向本项目发起pr

@wan0ge
Copy link
Author

wan0ge commented Oct 17, 2024

对了,我上面忘记说了,autoload_local_danmaku功能自动关联的是与视频同名的.xml文件。

如果还能直接把xml文件拖进去加载就好了

拖文件自动加载应该是mpv应用层面的行为,插件如何拦截拖进mpv进行加载的文件并覆盖mpv的默认处理逻辑,我一下子没想到要怎么实现。有人有想法的话,可以给我一些建议或者向本项目发起pr

草,确实。如果曲线救国一下从弹幕源添加弹幕功能支持本地文件路径呢

@Tony15246
Copy link
Owner

草,确实。如果曲线救国一下从弹幕源添加弹幕功能支持本地文件路径呢

这个倒是不难实现,我今天晚上回寝室添加一下这个功能,现在我的电脑不在身边。

@dyphire
Copy link
Collaborator

dyphire commented Oct 17, 2024

对了,我上面忘记说了,autoload_local_danmaku功能自动关联的是与视频同名的.xml文件。

如果还能直接把xml文件拖进去加载就好了

拖文件自动加载应该是mpv应用层面的行为,插件如何拦截拖进mpv进行加载的文件并覆盖mpv的默认处理逻辑,我一下子没想到要怎么实现。有人有想法的话,可以给我一些建议或者向本项目发起pr

可以通过 mpv 的 on_load_fail 的 hook 事件实现,当文件加载失败时检测扩展名如果是 xml 就假设是弹幕文件再进行处理
我个人不喜欢也不推荐这种做法

@Tony15246
Copy link
Owner

可以通过 mpv 的 on_load_fail 的 hook 事件实现,当文件加载失败时检测扩展名如果是 xml 就假设是弹幕文件再进行处理 我个人不喜欢也不推荐这种做法

我也觉得这么干有点钻空子的感觉,不是正常的处理逻辑。

如果曲线救国一下从弹幕源添加弹幕功能支持本地文件路径呢

我就还是先按这个逻辑来实现吧。弹弹play的app既然支持从弹幕源加载弹幕功能使用本地文件路径,说明这么干还是比较合理和符合用户需求的

@dyphire
Copy link
Collaborator

dyphire commented Oct 17, 2024

可以通过 mpv 的 on_load_fail 的 hook 事件实现,当文件加载失败时检测扩展名如果是 xml 就假设是弹幕文件再进行处理 我个人不喜欢也不推荐这种做法

我也觉得这么干有点钻空子的感觉,不是正常的处理逻辑。

如果曲线救国一下从弹幕源添加弹幕功能支持本地文件路径呢

我就还是先按这个逻辑来实现吧。弹弹 play 的 app 既然支持从弹幕源加载弹幕功能使用本地文件路径,说明这么干还是比较合理和符合用户需求的

我看了下弹弹play 的加载 xml 弹幕文件的介绍,只支持 bilibili 和 niconico 格式的 xml 弹幕。像这个 issue 提到的动画疯还有爱腾优的 xml 弹幕理论上是不支持的,最关键的是这是弹弹play 客户端通过弹幕插件实现的,dandanplay api 的 extcomment 接口只接受 url

@wan0ge
Copy link
Author

wan0ge commented Oct 17, 2024

我看了下弹弹play 的加载 xml 弹幕文件的介绍,只支持 bilibili 和 niconico 格式的 xml 弹幕。像这个 issue 提到的动画疯还有爱腾优的 xml 弹幕理论上是不支持的,最关键的是这是弹弹play 客户端通过弹幕插件实现的,dandanplay api 的 extcomment 接口只接受 url

格式问题确实如此,我是自己GPT写了个转换格式的脚本,刚刚细看发现DanmakuFactory本身就是个格式转换工具,如果能做到不支持的格式调用转换一下就行?接口问题只能麻烦你们想办法了,不能一个入口两个功能吗,或者另做一个入口专门加载本地弹幕?

@Tony15246
Copy link
Owner

Tony15246 commented Oct 17, 2024

最关键的是这是弹弹play 客户端通过弹幕插件实现的,dandanplay api 的 extcomment 接口只接受 url

加载本地弹幕肯定是不能指望弹弹play的api了。我的想法是当用户使用从弹幕源添加弹幕时,判断用户输入的是否是网络url,如果不是网络地址就认为用户在试图选择本地弹幕进行加载。这时候就调用danmakufactory进行转换和加载。

需要考虑的兼容性问题主要是用户输入的弹幕文件的格式是否受danmakufactory支持

@dyphire
Copy link
Collaborator

dyphire commented Oct 17, 2024

最关键的是这是弹弹play 客户端通过弹幕插件实现的,dandanplay api 的 extcomment 接口只接受 url

加载本地弹幕肯定是不能指望弹弹play的api了。我的想法是当用户使用从弹幕源添加弹幕时,判断用户输入的是否是网络url,如果不是网络地址就认为用户在试图选择本地弹幕进行加载。这时候就调用danmakufactory进行转换和加载。

需要考虑的兼容性问题主要是用户输入的弹幕文件的格式是否受danmakufactory支持

这倒是可行,danmakufactory 的 xml 弹幕文件的格式支持挺强大,爱腾优的都没问题,动画疯的没试过,应该也没问题,不行的话也可以去开个功能请求的 issue(

@wan0ge
Copy link
Author

wan0ge commented Oct 17, 2024

这倒是可行,danmakufactory 的 xml 弹幕文件的格式支持挺强大,爱腾优的都没问题,动画疯的没试过,应该也没问题,不行的话也可以去开个功能请求的 issue(

动画疯我试了可以,这下我们支持的弹幕文件类型就比弹弹Play多了()

@Tony15246
Copy link
Owner

@wan0ge 功能已添加。在我本地linux环境和同学的windows环境下测试暂无问题。你可以克隆最新版本代码,尝试一下是否可以正常使用。如无问题,此issue将关闭。

@Tony15246 Tony15246 added the enhancement New feature or request label Oct 17, 2024
@wan0ge
Copy link
Author

wan0ge commented Oct 17, 2024

@wan0ge 功能已添加。在我本地linux环境和同学的windows环境下测试暂无问题。你可以克隆最新版本代码,尝试一下是否可以正常使用。如无问题,此issue将关闭。

没问题!测了下一切正常很好用 辛苦了感谢👍👍👍

@Tony15246 Tony15246 pinned this issue Nov 3, 2024
@Tony15246 Tony15246 unpinned this issue Dec 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants