ani icon indicating copy to clipboard operation
ani copied to clipboard

支持读取本地目录媒体文件

Open TCOTC opened this issue 1 year ago • 8 comments

本地已经有下载好的资源了,想用 Ani 播放看弹幕

Screenshot_2024-05-27-22-00-49-50_9e8df3d0c7c1f50248b6ee043a653d26.jpg

TCOTC avatar May 27 '24 14:05 TCOTC

這個確實好

NeKoOuO avatar May 27 '24 15:05 NeKoOuO

这在实现上可能是非常复杂的,ani高度依赖bangumi条目数据匹配弹幕,所以播放本地文件也只能在一个剧集播放器页面进行。

在这种限制下,实现就比较简单一点。最简单的实现应该是,实现一个 DirectoryMediaSource,根据参数传入的绝对路径,去扫描文件,然后使用 ani 的标题解析器去自动解析文件名。

但解析这一步也很复杂。ani 最早有一个 PatternBasedTitleParser(简称PB),目前主要使用 LabelFirstTitleParser(简称L1)。L1 能以非常高(通过3000+单元测试)的准确性解析出剧集和字幕信息,但是不能解析标题;PB 能解析标题,但是剧集正确性很差。为了正确匹配本地文件,只能使用 PB。PB 解析标题的正确性也不佳,尤其是遇到按空格分隔的文件名的时候。还要考虑别名的情况。

综合下来,可以考虑先通过字符串查找,用 bangumi 条目给的名称过滤一遍,再使用 L1 解析剧集。

另一种方式是,在选择数据源的时候增加一个选择本地文件的功能。弹出系统选文件对话框。但是这样会需要改复杂的 media selector 及其配套设施,估计也不简单。

Him188 avatar Jun 15 '24 22:06 Him188

其实抛开弹幕,ani加上import本地文件的功能本身就可以充当一个很好的本地番剧资源+进度管理器了,这种情况下哪怕没有自动识别一个一个去加目录我也是愿意的(

Promissa avatar Jun 16 '24 15:06 Promissa

支持,非常需要这个特性

Jiang10086 avatar Jul 10 '24 14:07 Jiang10086

考虑一下 https://github.com/Vorror/anitomyJ 这个库呢,jellyfin的bangumi插件用的是这个库的c#移植版

不过在jellyfin上的使用体验表明

  • 如果是单集放在同一个文件夹则匹配效率最高
  • bd合集/带正片以外的合集扫出来一团乱(vcb等)
  • 更别提 s1+s2+ova/剧场版 这种情况的合集了,简直就是灾难

chisaato avatar Apr 08 '25 22:04 chisaato

@chisaato 感谢提供这个库

Ani 内置自己的解析器 (名为 L1), 支持 s1+s2+剧场版 等复杂剧集情况, 覆盖一万个 test case, 处理了动漫花园最近几个月的所有标题. 解析剧集是极其准的.

但是 L1 只支持剧集, 还需搭配 Ani 内置的旧版的一个旧版解析器, 即可获取标题. 但是标题除了上机器学习和数据库穷举 (都需要服务端工作和成本) 以外, 是不好保证正确率的.

如果要做支持播放本地, 也会先做成进入播放页后拖拽视频播放, 而没有本地视频归类功能.

Him188 avatar Apr 09 '25 00:04 Him188

@chisaato 感谢提供这个库

Ani 内置自己的解析器 (名为 L1), 支持 s1+s2+剧场版 等复杂剧集情况, 覆盖一万个 test case, 处理了动漫花园最近几个月的所有标题. 解析剧集是极其准的.

但是 L1 只支持剧集, 还需搭配 Ani 内置的旧版的一个旧版解析器, 即可获取标题. 但是标题除了上机器学习和数据库穷举 (都需要服务端工作和成本) 以外, 是不好保证正确率的.

如果要做支持播放本地, 也会先做成进入播放页后拖拽视频播放, 而没有本地视频归类功能.

做成进入单集播放页面拖拽或选择本地视频播放也是可以的。 其实也可以做成拖拽文件夹,对文件夹中的视频按照名称进行排序,播放的第一个视频对应本集,下一个视频就自动匹配下集的弹幕。 这样实现起来相对会简单很多

pheotry avatar Aug 09 '25 15:08 pheotry

如果能在选择数据源界面添加一个选择本地视频文件选项就好了

WKenX avatar Oct 20 '25 12:10 WKenX