GithubHelp home page GithubHelp logo

kookxiang / jellyfin-plugin-bangumi Goto Github PK

View Code? Open in Web Editor NEW
451.0 6.0 19.0 1.25 MB

bgm.tv plugin for jellyfin

License: GNU General Public License v2.0

C# 90.47% HTML 9.53%
jellyfin-plugin bangumi plugin jellyfin jellyfin-metadata-provider

jellyfin-plugin-bangumi's People

Contributors

chu-shen avatar everpcpc avatar fiochen avatar kookxiang avatar rankki avatar wzyboy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

jellyfin-plugin-bangumi's Issues

条目名字里含有 OVA/OAD 但集数不在 SP 里时无法关联 Bangumi ID

这个现象似乎是 #48 之后出现的,不过我也不确定。

有些动画 TV 集数和 OVA/OAD 是两个分开的条目,但是编号是连续的,比如:

目录结构按照 Bangumi 条目原文名字建立:

長門有希ちゃんの消失
├── 01.mkv
├── ...
└── 16.mkv
長門有希ちゃんの消失 OAD/
└── 17.mkv

第二个条目只有 17 集这一集是 type=0。这种情况下 01 到 16 集能关联到正确 Bangumi ID,但是 17 集关联不到。我猜是因为目录名字里含有 OAD 字符所以去按 SP 找了?

无法把进度同步到bangumi

我在jellyfin这边设置了bangumi的id,然后这jellyfin这边把对应的集标为了在看。但是bangumi这边一直没有更新?

添加音乐的刮削支持

首先感谢大佬制作插件,一直在拿来刮削动漫。
不知后续能否添加刮削bangumi音乐信息的功能,包括cover、简介、曲目列表之类的。

今天早上开始章节信息都获取不到了

昨天都是好的。 日志只能看到这种 然后后面就没有反应了

[2022-07-18 11:56:19.277 +00:00] [WRN] [26] Jellyfin.Plugin.Bangumi.Providers.EpisodeProvider: file "[NC-Raws] Love Live! SuperStar!! 第二季 - 01 (Baha 1920x1080 AVC AAC MP4) [311F4267].mp4" has incorrect episode index 1, set to 1

[2022-07-18 12:06:03.289 +00:00] [WRN] [46] Jellyfin.Plugin.Bangumi.Providers.EpisodeProvider: file "[NC-Raws] 轉生賢者的異世界生活~取得第二職業,成為世界最強~ - 04 (Baha 1920x1080 AVC AAC MP4) [F895981E].mp4" has incorrect episode index 4, set to 4

搜了下代码是进了这里

        if (episodeIndex > max)
        {
            _log.LogWarning("file {FileName} has incorrect episode index {Index}, set to {NewIndex}",
                fileName, episodeIndex, episodeIndexFromFilename);
            return episodeIndexFromFilename;
        }

重启 删插件的配置也没有用, 手动匹配剧集可以获取剧集和季度信息, 唯独章节信息获取不到

如何更新bangumi的播放进度记录?

设置中已经进行用户授权了
刮削器中可以刮削到bangumi的数据
但是我看功能介绍中介绍可以将播放记录同步至bangumi
这项功能要如何实现?
目前并没有发现有播放记录被同步至bangumi

版本:10.7.7
操作系统:Linux
架构:X64

插件版本:1.3.7.0

死循环?

今天发现 API 请求数特别多,看了下UA发现不是爬虫。是这个插件的UA在不停的请求同样章节信息。

基本就是/v0/episodes?subject_id=24823&limit=50&offset=878/v0/episodes?subject_id=24823&limit=50&offset=828 两个链接。

也有可能不是插件的BUG,是有人用了插件的UA。

image

更新了新版插件后,集数识别有误

更新了最新版的插件,以前正确识别的番剧集数名字,现在也不正常了。
以下面这个文件名为例
[ANK-Raws] あっちこっち (BDrip 1920x1080 HEVC-YUV420P10 FLAC)/[01] [ANK-Raws] あっちこっち 01 (BDrip 1920x1080 HEVC-YUV420P10 FLAC).mkv
识别出来的剧集名是
特典 - 「这里⇔那里」
但实际上它不是特典,而且在bangumi上的信息是
ep.1 「あっち⇔こっち」
中文标题:「这里⇔那里」
首播:2012-04-05
时长:24:20

同时,一些动漫的剧集名无法识别了,如下
[01] [Deaimon][01][BDRIP][1080P][H264_FLACx2].mkv
以前的版本是可以正确识别的,现在不行了。
image
我的设置是这样的

可以按照season 1 season 2的格式进行识别吗

我的目录结构是这样的:
租借女友 (2020)
│ tvshow.nfo
│ folder.jpg
│ banner.jpg

├─Season 1
│ │ 租借女友 (2020) S01E01.mp4
│ │ 租借女友 (2020) S01E10.nfo
│ │ 租借女友 (2020) S01E02.mp4
│ │ 租借女友 (2020) S01E09.nfo
│ │ 租借女友 (2020) S01E03.mp4
│ │ 租借女友 (2020) S01E08.nfo
│ │ 租借女友 (2020) S01E04.mp4
│ │ 租借女友 (2020) S01E07.nfo
│ │ 租借女友 (2020) S01E05.mp4
│ │ 租借女友 (2020) S01E06.nfo
│ │ 租借女友 (2020) S01E06.mp4
│ │ 租借女友 (2020) S01E05.nfo
│ │ 租借女友 (2020) S01E07.mp4
│ │ 租借女友 (2020) S01E04.nfo
│ │ 租借女友 (2020) S01E08.mp4
│ │ 租借女友 (2020) S01E03.nfo
│ │ 租借女友 (2020) S01E09.mp4
│ │ 租借女友 (2020) S01E02.nfo
│ │ 租借女友 (2020) S01E10.mp4
│ │ 租借女友 (2020) S01E01.nfo
│ │ 租借女友 (2020) S01E12.nfo
│ │ 租借女友 (2020) S01E11.mp4
│ │ 租借女友 (2020) S01E11.nfo
│ │ 租借女友 (2020) S01E12.mp4
│ │ season.nfo
│ │
│ └─metadata
│ 租借女友 (2020) S01E01.jpg
│ 租借女友 (2020) S01E02.jpg
│ 租借女友 (2020) S01E03.jpg
│ 租借女友 (2020) S01E04.jpg
│ 租借女友 (2020) S01E05.jpg
│ 租借女友 (2020) S01E06.jpg
│ 租借女友 (2020) S01E07.jpg
│ 租借女友 (2020) S01E09.jpg
│ 租借女友 (2020) S01E10.jpg
│ 租借女友 (2020) S01E11.jpg
│ 租借女友 (2020) S01E12.jpg
│ 租借女友 (2020) S01E08.jpg

└─Season 2
│ season.nfo
│ 租借女友 (2020) S02E01.mp4
│ 租借女友 (2020) S02E01.nfo
│ 租借女友 (2020) S02E02.mp4
│ 租借女友 (2020) S02E02.nfo
│ 租借女友 (2020) S02E03.mp4
│ 租借女友 (2020) S02E03.nfo
│ 租借女友 (2020) S02E04.mp4
│ 租借女友 (2020) S02E04.nfo
│ 租借女友 (2020) S02E05.mp4
│ 20221008145912853.nfo
│ 租借女友 (2020) S02E06.mp4
│ 租借女友 (2020) S02E06.nfo
│ 租借女友 (2020) S02E07.mp4
│ 租借女友 (2020) S02E07.nfo
│ 租借女友 (2020) S02E08.mp4
│ 租借女友 (2020) S02E08.nfo
│ 租借女友 (2020) S02E09.mp4
│ 租借女友 (2020) S02E09.nfo
│ 租借女友 (2020) S02E10.mp4
│ 租借女友 (2020) S02E10.nfo
│ 租借女友 (2020) S02E11.mp4
│ 租借女友 (2020) S02E11.nfo
│ 租借女友 (2020) S02E12.mp4
│ 租借女友 (2020) S02E12.nfo
│ 租借女友 (2020) S02E05.nfo

└─metadata
租借女友 (2020) S02E05.jpg
租借女友 (2020) S02E02.jpg
租借女友 (2020) S02E03.jpg
租借女友 (2020) S02E04.jpg
租借女友 (2020) S02E07.jpg
租借女友 (2020) S02E08.jpg
租借女友 (2020) S02E09.jpg
租借女友 (2020) S02E10.jpg
租借女友 (2020) S02E11.jpg
租借女友 (2020) S02E12.jpg

但只能识别为这样,第二季要分成独立的文件夹才能识别:
20221009_011059_683

如何授权?

{"error":"redirect_uri_mismatch","error_description":"The redirect URI is missing or do not match"}

续作(第二季等)点格子错误

比如这样一个目录。

 吹响!悠风号
└── Season 2
    └── [CASO&SumiSora][Sound!Euphonium2][GB][1080P]
        ├── [CASO&SumiSora][Sound!Euphonium2][01][GB][1080P].mp4
        ├── [CASO&SumiSora][Sound!Euphonium2][02][GB][1080P].mp4
        ├── [CASO&SumiSora][Sound!Euphonium2][03][GB][1080P].mp4
        ├── [CASO&SumiSora][Sound!Euphonium2][04][GB][1080P].mp4
        ├── [CASO&SumiSora][Sound!Euphonium2][05][GB][1080P].mp4
        ├── [CASO&SumiSora][Sound!Euphonium2][06][GB][1080P].mp4
        ├── [CASO&SumiSora][Sound!Euphonium2][07][GB][1080P].mp4
        ├── [CASO&SumiSora][Sound!Euphonium2][08][GB][1080P].mp4
        ├── [CASO&SumiSora][Sound!Euphonium2][09][GB][1080P].mp4
        ├── [CASO&SumiSora][Sound!Euphonium2][10][GB][1080P].mp4
        ├── [CASO&SumiSora][Sound!Euphonium2][11][GB][1080P].mp4
        ├── [CASO&SumiSora][Sound!Euphonium2][12][GB][1080P].mp4
        └── [CASO&SumiSora][Sound!Euphonium2][13][GB][1080P].mp4

自动点格子总是会点到第一季。

看起来是因为 Bangumi Episode Id 总是获取的第一季的单集ID。

刮削 狼与香辛料 无法获取集数与标题信息

刮削VCB-Studio的狼与香辛料 BDRip [torrent文件]
控制台模式显示能正常获取到集数,但是实际刷新元数据后无法获得集数信息

[02:08:11] [WRN] [28] Jellyfin.Plugin.Bangumi.Providers.EpisodeProvider: use episode index 8 instead of 0 for [VCB-Studio] Spice and Wolf [08][Ma10p_1080p][x265_flac].mkv
[02:08:13] [WRN] [28] Jellyfin.Plugin.Bangumi.Providers.EpisodeProvider: use episode index 9 instead of 0 for [VCB-Studio] Spice and Wolf [09][Ma10p_1080p][x265_flac].mkv
[02:08:14] [WRN] [28] Jellyfin.Plugin.Bangumi.Providers.EpisodeProvider: use episode index 10 instead of 0 for [VCB-Studio] Spice and Wolf [10][Ma10p_1080p][x265_flac].mkv

我以为是插件出现bug,后来查看是将文件名中的Spice识别成SP了。改了一下文件名才能正确刮削,SP正则改成和EP一样的 \[SP(\d{2,3}) 能避免这种问题

[02:17:29] [WRN] [99] Jellyfin.Plugin.Bangumi.Providers.EpisodeProvider: use episode index 9 instead of 0 for [VCB-Studio] S pice and Wolf II [09][Ma10p_1080p][x265_flac].mkv
[02:17:30] [INF] [77] Jellyfin.Plugin.Bangumi.Providers.EpisodeProvider: use exists episode number 9 from file name [VCB-Studio] S pice and Wolf II [09][Ma10p_1080p][x265_flac].mkv

SP章节位置的问题

if (string.Compare(episode.AirDate, series.AirDate, StringComparison.Ordinal) < 0)
result.Item.AirsBeforeEpisodeNumber = seasonNumber;
else
result.Item.AirsAfterSeasonNumber = seasonNumber;

很多情况api会返回sp的airdate为空字符串, 这时就会进前面的if, 导致这个章节排在第一集的前面
个人觉得没有airdate的章节应该放在季度最后面

无法获取元数据

Jellyfin版本:

服务器:jellyfin
版本:10.8.7
操作系统:Linux
架构:X64

Bangumi版本:1.4.18.0
日志:
[2022-11-05 07:29:32.276 +08:00] [ERR] [38] 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, ReadOnlySpan1 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.JsonConverter1.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.JsonConverter1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state) at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan1 utf8Json, JsonTypeInfo jsonTypeInfo, Nullable1 actualByteCount) at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan1 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.MetadataService2.ExecuteRemoteProviders(MetadataResult1 temp, String logName, TIdType id, IEnumerable`1 providers, CancellationToken cancellationToken)

感谢大佬的辛苦付出,建议可以增加调试选项,把请求等关键信息打在日志里

服务器返回的时间格式不对的报错 导致元数据插入失败

返回的日期为2006, 这里应该校验下日期格式

[08:21:23] [INF] [55] Jellyfin.Plugin.Bangumi.Providers.EpisodeProvider: use exists episode number 0 from file name [DMHY][aria][00][BD-720P][CHS].mp4                                                                                                                                
[08:21:23] [ERR] [55] MediaBrowser.Providers.TV.EpisodeMetadataService: Error in Bangumi                                                   
System.FormatException: String '2006' was not recognized as a valid DateTime.                                                              
   at System.DateTimeParse.Parse(ReadOnlySpan`1 s, DateTimeFormatInfo dtfi, DateTimeStyles styles)                                         
   at Jellyfin.Plugin.Bangumi.Providers.EpisodeProvider.GetMetadata(EpisodeInfo info, CancellationToken token)                             
   at MediaBrowser.Providers.Manager.MetadataService`2.ExecuteRemoteProviders(MetadataResult`1 temp, String logName, TIdType id, IEnumerable`1 providers, CancellationToken cancellationToken)    

文件名解析

目标

将文件名解析的工作分离出来,向用户提供两种解析器:

  1. bangumi插件自带的解析器,与其他解析器互斥
  2. 其他解析器

优点

  1. 插件自带简单处理逻辑,无需额外操作即可获得较好效果
  2. 兼容其他解析器,优势明显,可以提供更好的解析效果

应用场景

  1. 动画标题识别
  2. 复杂场景下的集数识别
  3. SP识别👉#33 (comment)

实现

  1. bangumi插件调整解析逻辑,分离自带的解析器
  2. 集成其他解析器

解析器我推荐现成的AnitomySharp,也可以选择原版

AnitomySharp提供以下类别的解析结果👉ElementCategory

使用方法见👉Anitomy.cs

大家觉得怎么样,讨论一下是否可行

Emby 适配

首先感谢大佬制作这款插件,
不知是否有意向也为Emby适配一下呢?

无法刮削连载超过100话的番剧

刮削KERORO军曹前100话能正常获取标题等信息,100话后无法刮削到数据

谢谢回复,另外想询问一下有关于SP的刮削问题,部分番剧包含SP OP ED等,能否支持一下SP的刮削?
例如

一些 bad case 和一些建议

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

图片

[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拿到日文原标题辅助一下……

已有BangumiId的Episode, 希望可以直接从这个id获取元数据

主要是为了解决一些疑难Episode的匹配问题, 实在匹配不上可以通过手动输入BangumiId来获取数据

因为bangumi的某些oad的集号真的很奇怪, 我不想改成和他一样, 但是不改又匹配不上
这时我就可以手动指定id后获取元数据

还有些oad是单独出现在一个条目里, 因为名字带有oad就会找sp的条目, 我修改文件名把其中oad去掉就能匹配, 这些我也不想改文件名

所以希望能加上这个需求, 感谢

not support

1.4.18用手动添加的方式,在jellyfin 10.8.0中提示not support
image
image

Specials 匹配与正片重复的 SP 集数

比如炮姐,SP 的编号和正片编号是重复的:

每个条目都有 SP01 和 SP02,对应 MMR 这个小系列,一共 6 集。

本地目录结构(按照推荐把 SP 放在 Specials 子目录里):

とある科学の超電磁砲
├── [...]
└── Specials
    ├── 01.mkv
    └── 02.mkv
とある科学の超電磁砲S
├── [...]
└── Specials
    ├── 01.mkv
    └── 02.mkv
とある科学の超電磁砲T
├── [...]
└── Specials
    ├── 01.mkv
    └── 02.mkv

尽管 MMR 是放在 Specials 里,也被 Jellyfin 归到 Specials 季里,但是插件抓取到的 Bangumi Episode Id 和标题是正片部分的 01 和 02 集,而不是 SP01 和 SP02。

看了下 API 的返回,是有个 type 字段表示 episode 类型的,比如 0 是正片,1 是 SP 之类。也许可以考虑用这个来进行过滤,对于 Specials 目录里的文件,只匹配 type=1 的 episode。

状态 Malfunctioned 此插件没有配置选项

您好,我使用的是doker上的10.7.6版本的jellyfin,安装bangumi插件后显示 Bangumi 1.3.0.0 状态 Malfunctioned,点击显示此插件没有配置选项,请问大佬是缺少运行环境还是版本问题啊

适配电影削刮

请问一下大佬,能不能适配一下让这个插件支持电影类型的削刮?还是jellyfin支持而我用的emby版不支持呢?

登录但不同步进度

考虑到 API 频率限制以及 #9 所提的需要登录后才能搜索的条目,是否可以提供一个只登录(并用 token 进行搜索)但是不同步观看进度的选项?

使用场景:

  • 不希望里番观看进度同步到 Bangumi
  • Jellyfin 有多个用户,不希望其他人的观看进度同步到管理员的账号

进度上报不生效

[2022-12-29 04:25:42.094 +00:00] [INF] [53] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Web" "10.8.7" playing "好歹穿上内裤吧". Stopped at "1420138" ms
[2022-12-29 04:25:42.161 +00:00] [INF] [53] Jellyfin.Plugin.Bangumi.PlaybackScrobbler: report episode #"1128098" status Watched to bangumi
[2022-12-29 04:25:42.808 +00:00] [INF] [60] Jellyfin.Plugin.Bangumi.PlaybackScrobbler: report completed

日志显示上报成功, 实际上没标记为已播放
时间胶囊和动画页面都没有相应的显示
插件版本1.4.53.0

似乎无法获取元数据了

已经手动设置了bangumi id,但是刷新以后元数据也不会更新,修改图片也不会列出来自bangumi的封面图。
之前成功从bangumi获取过封面图的番剧,现在也获取不到了。
在“识别”中输入bangumi id会返回空结果。(但是使用名字检索却能搜到bangumi的结果)
另外授权登录会返回Error processing request.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.