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

一些 bad case 和一些建议 #33

Open
Icemic opened this issue Oct 6, 2022 · 30 comments
Open

一些 bad case 和一些建议 #33

Icemic opened this issue Oct 6, 2022 · 30 comments

Comments

@Icemic
Copy link

Icemic commented Oct 6, 2022

首先是很多章节都被识别成了

图片

[2021][Tsuki ga Michibiku Isekai Douchuu][BDRIP][1080P][1-12Fin+SP]
[2021][Eighty-Six][BDRIP][1080P][1-23Fin+SP]
[2012][Shinsekai Yori][BDRIP][1080][1-25Fin+SP]

这样的格式基本都会识别成 https://bangumi.tv/subject/4314 应该是文件名解析的问题,但是我没找到为什么……(或许你们的解析器做个在线测试功能比较好?

另一个是一个bug,文件名没有反转义,就出现了这样的情况
图片

之后是建议的部分

  1. 建议切换到新版的搜索,等这个 issue 完成之后,搜索精准度应该会更好一些。(是的我本来也想做同样的东西但是发现搜索准确性太低了,就先去帮忙优化搜索了orz)
  2. 文件名大多是英文的(英文名或罗马音),这部分名称很可能没有记录在 bgm 条目中,导致搜索不到。或许可以考虑用tmdb或anidb拿到日文原标题辅助一下……
@Icemic
Copy link
Author

Icemic commented Oct 6, 2022

还有一种情况就是 bgm 条目缺少分季标识导致的问题,比如 [Liuyun&VCB-S&ANK-Raws] Chihayafuru I+II [1080p] 就只能指定一个季度

@chu-shen
Copy link
Contributor

chu-shen commented Oct 7, 2022

关于文件名解析

  1. 设置里用的哪种解析方式?目前有:①此插件自带的解析;② AnitomySharp 解析
  2. AnitomySharp 装的哪个版本?

勾选「使用 AnitomySharp 猜测动画名」后结果应该是(先忽略 anilist ,详见「关于搜索」):
chrome_FG4zCW0oM5

[INF] [38] Jellyfin.Plugin.AniList.Providers.AniList.AniListSeriesProvider: Start AniList... before Searching ("[2012][Shinsekai Yori][BDRIP][1080][1-25Fin+SP]")
[INF] [38] Jellyfin.Plugin.AniList.Providers.AniList.AniListSeriesProvider: Start AniList... Searching("Shinsekai Yori")
[INF] [38] Jellyfin.Plugin.AniList.Providers.AniList.AniListSeriesProvider: AnitomySharp 567ef672, ElementFileName: Shinsekai Yori
[INF] [38] Jellyfin.Plugin.AniList.Providers.AniList.AniListSeriesProvider: AnitomySharp 567ef672, ElementAnimeTitle: Shinsekai Yori
[INF] [34] Jellyfin.Plugin.Bangumi.Providers.SeriesProvider: Searching "Shinsekai Yori" in bgm.tv
[INF] [38] Jellyfin.Plugin.Bangumi.Providers.SeriesProvider: Searching "新世界より" in bgm.tv

Parsing: [2012][Shinsekai Yori][BDRIP][1080][1-25Fin+SP]
ElementFileName: [2012][Shinsekai Yori][BDRIP][1080][1-25Fin+SP]
ElementSource: BDRIP
ElementAnimeType: SP
ElementAnimeYear: 2012
ElementVideoResolution: 1080
ElementEpisodeNumber: 1
ElementEpisodeNumber: 25
ElementReleaseInformation: Fin
ElementAnimeTitle: Shinsekai Yori

关于搜索

bgm没法匹配罗马音就很头痛 b38

目前插件是通过对搜索结果排序来提高正确率 #8 ,期待新的搜索👍

罗马音文件夹我是这样处理的:启用 bangumi、anilist 插件(使用 AnitomySharp 识别文件夹),然后刷新元数据。

内部逻辑应该是:

  1. bangumi 识别罗马音返回零个结果,anilist 能识别并返回正确结果
  2. bangumi 使用 anilist 的结果(日文标题)重新搜索
  3. bangumi 返回正确结果

关于分季

分季不知道大家有没有什么好的想法。我先抛砖引玉,可以通过 AnitomySharp 的ElementAnimeSeason获得季度,不过识别规则还有待完善,至于如何对应bangumi的条目就不清楚了🤣

Parsing: [2020][Re:Zero Kara Hajimeru Isekai Seikatsu 2nd Season][BDRIP][1080P][1-25Fin+SP]
ElementFileName: [2020][Re:Zero Kara Hajimeru Isekai Seikatsu 2nd Season][BDRIP][1080P][1-25Fin+SP]
ElementVideoResolution: 1080P
ElementAnimeSeason: 2
ElementSource: BDRIP
ElementAnimeType: SP
ElementAnimeYear: 2020
ElementEpisodeNumber: 1
ElementEpisodeNumber: 25
ElementReleaseInformation: Fin
ElementAnimeTitle: Re:Zero Kara Hajimeru Isekai Seikatsu

Parsing: [Liuyun&VCB-S&ANK-Raws] Chihayafuru I+II [1080p]
ElementFileName: [Liuyun&VCB-S&ANK-Raws] Chihayafuru I+II [1080p]
ElementVideoResolution: 1080p
ElementAnimeTitle: Chihayafuru I+II
ElementReleaseGroup: Liuyun&VCB-S&ANK-Raws

@Icemic
Copy link
Author

Icemic commented Oct 7, 2022

图片
插件是添加了 repository 之后安装的,应该都是最新版?

配合 anilist 的用法我再试试看

@chu-shen
Copy link
Contributor

chu-shen commented Oct 7, 2022

配合 anilist 的用法我再试试看

原版 AnitomySharp 无效的话替换成这个版本

anilist 也需要集成 AnitomySharp ,否则没法识别,用这个版本直接覆盖AniList_6.0.0.0

@Icemic
Copy link
Author

Icemic commented Oct 7, 2022

能分享下你的两个插件的配置和存储库里的设置吗?我这里没有出现使用anilist获得的日文标题搜索bgm.tv的情况,log 都是

[10:13:44] [INF] [8] Jellyfin.Plugin.Bangumi.Providers.SeriesProvider: Searching Shinsekai Yori in bgm.tv
[10:14:30] [INF] [48] Jellyfin.Plugin.Bangumi.Providers.SeriesProvider: Searching Shinsekai Yori in bgm.tv

@chu-shen
Copy link
Contributor

chu-shen commented Oct 7, 2022

能分享下你的两个插件的配置和存储库里的设置吗?我这里没有出现使用anilist获得的日文标题搜索bgm.tv的情况,log 都是

[10:13:44] [INF] [8] Jellyfin.Plugin.Bangumi.Providers.SeriesProvider: Searching Shinsekai Yori in bgm.tv
[10:14:30] [INF] [48] Jellyfin.Plugin.Bangumi.Providers.SeriesProvider: Searching Shinsekai Yori in bgm.tv

已经替换了吗?👇

配合 anilist 的用法我再试试看

原版 AnitomySharp 无效的话替换成这个版本

anilist 也需要集成 AnitomySharp ,否则没法识别,用这个版本直接覆盖AniList_6.0.0.0

配置和你的一样。目录结构:

$ pwd
/Jellyfin/Data/plugins

$ tree -L 3
|-- AniList_5.0.0.0
|   |-- Jellyfin.Plugin.AniList.dll
|   |-- jellyfin-plugin-anilist.png
|   `-- meta.json
|-- AniList_6.0.0.0
|   |-- AnitomySharp.dll
|   |-- Jellyfin.Plugin.AniList.dll
|   |-- jellyfin-plugin-anilist.png
|   `-- meta.json
|-- Bangumi
|   |-- Fastenshtein.LICENSE
|   |-- Fastenshtein.dll
|   |-- Jellyfin.Plugin.Bangumi.dll
|   |-- Newtonsoft.Json.dll
|   `-- meta.json

补下图:
image
image

@Icemic
Copy link
Author

Icemic commented Oct 7, 2022

都替换过了,问题依旧,很迷。
说起来我这边一直在报这样的错误,似乎是应该返回json的接口返回了html,不知道有没有关联

[10:52:19] [INF] [3] Jellyfin.Plugin.Bangumi.Providers.SeriesProvider: Searching Shinsekai Yori in bgm.tv
[10:52:20] [ERR] [3] MediaBrowser.Providers.TV.SeriesMetadataService: Error in Bangumi
System.Text.Json.JsonException: '<' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
 ---> System.Text.Json.JsonReaderException: '<' is an invalid start of a value. LineNumber: 0 | BytePositionInLine: 0.
   at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
   at System.Text.Json.Utf8JsonReader.ConsumeValue(Byte marker)
   at System.Text.Json.Utf8JsonReader.ReadFirstToken(Byte first)
   at System.Text.Json.Utf8JsonReader.ReadSingleSegment()
   at System.Text.Json.Utf8JsonReader.Read()
   at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
   --- End of inner exception stack trace ---
   at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& state, JsonReaderException ex)
   at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
   at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 utf8Json, JsonTypeInfo jsonTypeInfo, Nullable`1 actualByteCount)
   at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 json, JsonTypeInfo jsonTypeInfo)
   at System.Text.Json.JsonSerializer.Deserialize[TValue](String json, JsonSerializerOptions options)
   at Jellyfin.Plugin.Bangumi.BangumiApi.SearchSubject(String keyword, CancellationToken token)
   at Jellyfin.Plugin.Bangumi.Providers.SeriesProvider.GetMetadata(SeriesInfo info, CancellationToken token)
   at MediaBrowser.Providers.Manager.MetadataService`2.ExecuteRemoteProviders(MetadataResult`1 temp, String logName, TIdType id, IEnumerable`1 providers, CancellationToken cancellationToken)
[10:52:22] [INF] [24] Jellyfin.Plugin.Bangumi.Providers.SeriesProvider: Searching Shinsekai Yori in bgm.tv
[10:52:23] [INF] [36] Jellyfin.Plugin.Bangumi.Providers.SeriesProvider: Searching Shinsekai Yori in bgm.tv
[10:53:08] [INF] [15] Jellyfin.Plugin.Bangumi.Providers.SeriesProvider: Searching Shinsekai Yori in bgm.tv
[10:53:08] [INF] [38] Jellyfin.Plugin.Bangumi.Providers.SeriesProvider: Searching Shinsekai Yori in bgm.tv

@chu-shen
Copy link
Contributor

chu-shen commented Oct 7, 2022

都替换过了,问题依旧,很迷。 说起来我这边一直在报这样的错误,似乎是应该返回json的接口返回了html,不知道有没有关联

重启下 jellyfin,只开启 anilist 插件然后刷新元数据,看下这个插件是否正常

看下插件是否是 Active

@kookxiang
Copy link
Owner

现在插件并没有针对名称搜索优化过,搜索关键字是 jellyfin 自动识别出来的,所以可能存在一定的错误识别的情况
上面提到的 AnitomySharp 应该能解决名称识别的问题

主要番剧名称不像是集数那样可以直接正则捞出来,目前的方案只能是手动重命名 / AnitomySharp 识别

其实 bgm 也是一定程度上支持罗马音搜索的,比如 https://bgm.tv/subject/349441
image


名称转义的问题是因为 API 输出的时候转义了两次
例如:https://api.bgm.tv/v0/subjects/72266
"name":"ガールズ\u0026amp;パンツァー 劇場版" 就会变成 ガールズ&amp;パンツァー 劇場版
我看看能不能统一处理下

@chu-shen
Copy link
Contributor

chu-shen commented Oct 7, 2022

都替换过了,问题依旧,很迷。 说起来我这边一直在报这样的错误,似乎是应该返回json的接口返回了html,不知道有没有关联

这个PR已经修复识别逻辑和报错的问题 #23

我以为已经发版🤣 验证后才发现记错了,不好意思


可以拉取自行编译(action里的过期了)https://github.com/chu-shen/jellyfin-plugin-bangumi

或者这里下 https://airportal.cn/300599/VWPX0pCBz5/

@Icemic
Copy link
Author

Icemic commented Oct 7, 2022

@chu-shen 2333刚想跟你说我发现我自己编译最新版就没问题了

@kookxiang
Copy link
Owner

确实好久没发过正式版了…

@Icemic
Copy link
Author

Icemic commented Oct 7, 2022

又一个 bad case,中括号嵌套导致的大概是,应该不常见

(感觉这个 issue 可以转成 discussion 专门收集 bad case 了

[15:29:59] [INF] [42] Jellyfin.Plugin.Bangumi.Providers.SeriesProvider: Searching name [AI-Raws][Fate/stay night [UBW](2014)][TV 00-25+SP Fin][BDRip][MKV] in bgm.tv
[15:30:02] [INF] [42] Jellyfin.Plugin.Bangumi.Providers.SeriesProvider: Searching extracted tittle ] in bgm.tv
[15:30:03] [INF] [15] Jellyfin.Plugin.AniList.Providers.AniList.AniListSeriesProvider: Start AniList... before Searching ([AI-Raws][Fate/stay night [UBW](2014)][TV 00-25+SP Fin][BDRip][MKV])
[15:30:03] [INF] [15] Jellyfin.Plugin.AniList.Providers.AniList.AniListSeriesProvider: Start AniList... Searching(])
[15:30:03] [INF] [15] Jellyfin.Plugin.AniList.Providers.AniList.AniListSeriesProvider: AnitomySharp 2c2bef0f, ElementFileName: ]
[15:30:03] [INF] [15] Jellyfin.Plugin.AniList.Providers.AniList.AniListSeriesProvider: AnitomySharp 2c2bef0f, ElementAnimeTitle: ]

@chu-shen
Copy link
Contributor

chu-shen commented Oct 7, 2022

[AI-Raws][Fate/stay night UBW][TV 00-25+SP Fin][BDRip][MKV]

处理的结果如下,确实有问题

Parsing: [AI-Raws][Fate/stay night [UBW](2014)][TV 00-25+SP Fin][BDRip][MKV]
ElementFileName: [AI-Raws][Fate/stay night [UBW](2014)][TV 00-25+SP Fin][BDRip][MKV]
ElementAnimeType: TV
ElementAnimeType: SP
ElementReleaseInformation: Fin
ElementSource: BDRip
ElementVideoTerm: MKV
ElementAnimeYear: 2014
ElementEpisodeNumber: 00
ElementEpisodeNumber: 25
ElementAnimeTitle: ]
ElementReleaseGroup: AI-Raws

这个可能是 AnitomySharp 的边缘情况,代码里没有考虑到 erengy/anitomy#8 (comment)


Anitomy 的问题可以往这里提 https://github.com/erengy/anitomy

或者提交到 https://github.com/chu-shen/AnitomySharp

@wzyboy
Copy link
Contributor

wzyboy commented Jan 16, 2023

关于 Bangumi 不是所有条目都能用罗马音搜索到这件事,我已经放弃抵抗了。

现在我把所有动画都硬链接(cp -al)了一份,然后把目录名改成 Bangumi 上的原文标题。这样至少作品匹配不出问题了。单集的匹配的话,AnitomySharp 的效果还挺好的。

@Icemic
Copy link
Author

Icemic commented Feb 8, 2023

能否增加“忽略一定时长以下文件”功能呢?

对应的 bad case 是随每集一起的小剧场或预告之类的,经常被识别为对应的集数

图片

希望能在设置中增加全局开关,并允许设置忽略的长度阈值,默认5min左右。
同时在每个 tv show 的层面支持开启/关闭这个功能,来避免泡面番受到影响。

@kookxiang
Copy link
Owner

这个插件无能为力,只能靠 jellyfin 本体支持了

@Icemic
Copy link
Author

Icemic commented Feb 8, 2023

因为读取不到时长吗?我之前尝试加这个功能也是没找到这个数据,还以为是因为自己不熟悉API…

另外,刚才自动更新到 1.5.0.0 后,启动时炸了,没找到原因(

图片

@kookxiang
Copy link
Owner

插件没法控制隐藏或者显示某一集

启动失败的问题手动覆盖一下插件文件试试?

@Icemic
Copy link
Author

Icemic commented Feb 8, 2023

插件没法控制隐藏或者显示某一集

启动失败的问题手动覆盖一下插件文件试试?

手动覆盖问题依旧,重新查看 log 发现最前面说 AnitomySharp.dll 加载失败自动禁用了插件。
手动用 anilist 6.0.0.0 的对应文件覆盖之后插件正常加载了。
似乎发布的版本中 AnitomySharp.dll 文件有问题?

图片

@Icemic
Copy link
Author

Icemic commented Feb 8, 2023

插件没法控制隐藏或者显示某一集

其实我的想法不是隐藏或显示,而是当 Provider 里发现这个文件长度小于 5min 就返回未找到对应元数据就好了,现在是当成正常识别到的一集返回了。

@chu-shen
Copy link
Contributor

chu-shen commented Feb 8, 2023

能否增加“忽略一定时长以下文件”功能呢?

对应的 bad case 是随每集一起的小剧场或预告之类的,经常被识别为对应的集数

AnitomySharp做了一些修正,正在考虑将特典的识别加入到bangumi插件中

初版效果如下:image

不过由于之前误删分支,所以一切重来,敬请期待

我目前使用的早期版本:http://deershare.com/recv/829315

@chu-shen
Copy link
Contributor

chu-shen commented Feb 8, 2023

手动覆盖问题依旧,重新查看 log 发现最前面说 AnitomySharp.dll 加载失败自动禁用了插件。 手动用 anilist 6.0.0.0 的对应文件覆盖之后插件正常加载了。 似乎发布的版本中 AnitomySharp.dll 文件有问题?

是不是在插件目录放了两个 AnitomySharp.dll ?

@chu-shen chu-shen mentioned this issue Feb 8, 2023
@Icemic
Copy link
Author

Icemic commented Feb 8, 2023

是不是在插件目录放了两个 AnitomySharp.dll ?

这提醒到我了,是不是 jellyfin 加载每个插件里的 dll 都是加载到全局命名空间的?那么应该就是和 anilist 里的冲突了……推荐用哪个?

@chu-shen
Copy link
Contributor

chu-shen commented Feb 9, 2023

这提醒到我了,是不是 jellyfin 加载每个插件里的 dll 都是加载到全局命名空间的?那么应该就是和 anilist 里的冲突了……推荐用哪个?

是会冲突。自然是推荐我魔改后的啊🤣👉https://github.com/chu-shen/AnitomySharp

bangumi插件用的是原版

@kookxiang
Copy link
Owner

诶,原来是原版么…

@chu-shen
Copy link
Contributor

chu-shen commented Feb 9, 2023

诶,原来是原版么…

是的,修改时间是18年。不过也可以用吧,太久忘了🥲 调用方法都是一样的

@kookxiang
Copy link
Owner

诶,原来是原版么…

是的,修改时间是18年。不过也可以用吧,太久忘了🥲 调用方法都是一样的

应该是因为没上 nuget 的原因吧😂 这次看下和 #53 一起改了

@Icemic
Copy link
Author

Icemic commented Mar 10, 2023

插件没法控制隐藏或者显示某一集

ai 跟我说了一个办法(草),但是我不知道它是不是胡编的,麻烦看看能不能做到?

图片

@chu-shen
Copy link
Contributor

插句嘴,关于长时长与电影:

动画目录下包含TV和Movie、OVA等多种类型(没有分开配置媒体库),而Movie文件名通常不带序号,导致无法和bangumi ep匹配

思考过通过时长进行判断并添加默认序号1来处理的方式,没有测试实践🤣,也没想到更好的处理方式

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants