91270 / MeiamSubtitles

Emby Server / Jellyfin Server 端字幕插件 ,使用 迅雷影音、 射手网 接口精准匹配视频字幕
1.47k stars 140 forks source link

请求适配jellyfin #20

Closed gzxiexl closed 2 years ago

firstvip commented 2 years ago

同求

KevinZhangt commented 2 years ago

同求!!

Deepsea-x commented 2 years ago

同求

Oscar1011 commented 2 years ago

同求

91270 commented 2 years ago

呼声这么看,看来势必要研究下了,准备启动 Jellyfin 版本的支持,后续需要小伙伴支持一下测试工作。来个有经验的

arowrocher commented 2 years ago

同希望支持jellyfin,在emby上用过,非常好用。非常感谢开发者!

Oscar1011 commented 2 years ago

需要什么经验?

呼声这么看,看来势必要研究下了,准备启动 Jellyfin 版本的支持,后续需要小伙伴支持一下测试工作。来个有经验的

91270 commented 2 years ago

已经更新,求测试

arowrocher commented 2 years ago

已经更新,求测试

这就试试

arowrocher commented 2 years ago

已经更新,求测试

您好 ,我用的是nyanmikasa调整过的docker镜像,版本10.8,将两个文件放入/plugins之后,没有媒体库的字幕下载器看到emby时的两个选项

91270 commented 2 years ago

重启了么。插件里面看下加载状态

Oscar1011 commented 2 years ago

jellyfin的插件结构不太一样。按目录存放的,然后有个meta.json的文件配置

Oscar1011 commented 2 years ago

jellyfin的插件结构不太一样。按目录存放的,然后有个meta.json的文件配置

按结构写了个假的meta.json 。 目前测试迅雷可以搜索到但是无法下载 [05:01:21] [ERR] Error downloading subtitles System.NullReferenceException: Object reference not set to an instance of an object. at MediaBrowser.Providers.Subtitles.SubtitleManager.TrySaveSubtitle(Video video, LibraryOptions libraryOptions, SubtitleResponse response) at MediaBrowser.Providers.Subtitles.SubtitleManager.DownloadSubtitles(Video video, LibraryOptions libraryOptions, String subtitleId, CancellationToken cancellationToken) at Jellyfin.Api.Controllers.SubtitleController.DownloadRemoteSubtitles(Guid itemId, String subtitleId)

91270 commented 2 years ago

我没放那个文件,他启动之后会自动生成。我是在 WIDNOWS 下的服务端测试的

91270 commented 2 years ago

jellyfin的插件结构不太一样。按目录存放的,然后有个meta.json的文件配置

按结构写了个假的meta.json 。 目前测试迅雷可以搜索到但是无法下载 [05:01:21] [ERR] Error downloading subtitles System.NullReferenceException: Object reference not set to an instance of an object. at MediaBrowser.Providers.Subtitles.SubtitleManager.TrySaveSubtitle(Video video, LibraryOptions libraryOptions, SubtitleResponse response) at MediaBrowser.Providers.Subtitles.SubtitleManager.DownloadSubtitles(Video video, LibraryOptions libraryOptions, String subtitleId, CancellationToken cancellationToken) at Jellyfin.Api.Controllers.SubtitleController.DownloadRemoteSubtitles(Guid itemId, String subtitleId)

日志里面应该回返回下载路径,你试试看那个路径是否能打开

arowrocher commented 2 years ago

重启了么。插件里面看下加载状态

malfunction. 因为是docker版就比较无脑地解压放在/plugin,如果有操作错误请指点一下我

Oscar1011 commented 2 years ago

迅雷插件好像除了这个没其他日志输出了。又重新试了 射手的。 emby 里可以搜索到字幕的剧集,用jellyfin无法搜索到。 下面是日志。顺便说下我的环境是 黑裙 docker 的 jellyfin [2022-04-02 16:18:31.257 +00:00] [INF] MeiamSub.Shooter Search | Request -> {"Language":"chi","TwoLetterISOLanguageName":"zh","ContentType":"Episode","MediaPath":"/DownloadFile2/transmission/sonarr_rss/鐢佃鍓�/From/S01/From - S01E08 - WEBDL-1080p.mkv","SeriesName":"姊﹂瓏缁濋晣","Name":"绗� 8 闆� 鐮寸鐨勭獥鎴凤紝鏁炲紑鐨勯棬","IndexNumber":8,"ParentIndexNumber":1,"ProductionYear":2022,"RuntimeTicks":33106558976,"IsPerfectMatch":false,"ProviderIds":{"Tvdb":"8808288","Imdb":"tt15505832"},"SearchAllProviders":true,"DisabledSubtitleFetchers":[],"SubtitleFetcherOrder":[]} [2022-04-02 16:18:31.266 +00:00] [INF] MeiamSub.Shooter Search | Request -> {"filehash":"af4e8b9585aa1b2e8551b6cbd283dae2%3ba1a3fd55ef7fe4840676fb52637dcee2%3b6bfeaeaa7cf7326db8c13940602f2a3f%3bfb965b035a922e71c037f486dac80a03","pathinfo":"%2fDownloadFile2%2ftransmission%2fsonarr_rss%2f%e7%94%b5%e8%a7%86%e5%89%a7%2fFrom%2fS01%2fFrom+-+S01E08+-+WEBDL-1080p.mkv","format":"json","lang":"chn"} [2022-04-02 16:18:31.582 +00:00] [INF] MeiamSub.Shooter Search | Response -> {"Version":{"Major":1,"Minor":1,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1},"Content":{"Headers":[{"Key":"Content-Type","Value":["application/octet-stream"]}]},"StatusCode":"OK","ReasonPhrase":"OK","Headers":[{"Key":"Connection","Value":["close"]},{"Key":"Transfer-Encoding","Value":["chunked"]},{"Key":"Date","Value":["Sat, 02 Apr 2022 16:18:31 GMT"]},{"Key":"Eagleid","Value":["d35bea1c16489163113398478e"]},{"Key":"Server","Value":["Tengine"]},{"Key":"Timing-Allow-Origin","Value":["*"]},{"Key":"Via","Value":["cache25.l2hk2[107,0], cache5.l2su18-3[110,0], cache8.cn4050[186,0]"]},{"Key":"X-Cache-Status","Value":["HIT"]}],"TrailingHeaders":[],"RequestMessage":{"Version":{"Major":1,"Minor":1,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1},"VersionPolicy":"RequestVersionOrLower","Content":{"Headers":[{"Key":"Content-Type","Value":["application/json"]},{"Key":"Content-Length","Value":["316"]}]},"Method":{"Method":"POST"},"RequestUri":"http://www.shooter.cn/api/subapi.php","Headers":[{"Key":"traceparent","Value":["00-1b504b993510724cbdb9a1cd18d157df-a3609d708817e94c-00"]}],"Properties":{},"Options":{}},"IsSuccessStatusCode":true} [2022-04-02 16:18:31.583 +00:00] [INF] MeiamSub.Shooter Search | Summary -> Get 0 Subtitles

jellyfin的插件结构不太一样。按目录存放的,然后有个meta.json的文件配置

按结构写了个假的meta.json 。 目前测试迅雷可以搜索到但是无法下载 [05:01:21] [ERR] Error downloading subtitles System.NullReferenceException: Object reference not set to an instance of an object. at MediaBrowser.Providers.Subtitles.SubtitleManager.TrySaveSubtitle(Video video, LibraryOptions libraryOptions, SubtitleResponse response) at MediaBrowser.Providers.Subtitles.SubtitleManager.DownloadSubtitles(Video video, LibraryOptions libraryOptions, String subtitleId, CancellationToken cancellationToken) at Jellyfin.Api.Controllers.SubtitleController.DownloadRemoteSubtitles(Guid itemId, String subtitleId)

日志里面应该回返回下载路径,你试试看那个路径是否能打开

Oscar1011 commented 2 years ago

重启了么。插件里面看下加载状态

malfunction. 因为是docker版就比较无脑地解压放在/plugin,如果有操作错误请指点一下我

plugin 目录里建个文件夹,把dll放进去就行了

BenBenJian commented 2 years ago

同希望支持jellyfin,在emby上用过,非常好用。非常感谢开发者!

威联通用的话,两个文件放什么位置啊,现在插件显示出来了,但是还是没办法找到字幕

arowrocher commented 2 years ago

malfunction.

您好,我确认了一下,我是这么做的,现在插件显示malfunction.媒体库管理里也看不到别的字幕下载。

jjm2473 commented 2 years ago

jellyfin添加这个仓库就可以安装了 https://gitee.com/jjm2473/jellyfin-plugins-repo/raw/master/manifest.json

jjm2473 commented 2 years ago

支持的是10.7

jjm2473 commented 2 years ago

适配jellyfin 10.7 ,年前我就做了 https://github.com/jjm2473/jellyfin-plugin-shootersub/tree/10.7

91270 commented 2 years ago

没办法找到字幕可能是片源的问题

91270 commented 2 years ago

Plugin 目录里建立 MeiamSub 目录, 然后把两个文件丢进去,在插件管理中心看插件是不是 Active 状态,如果是,并且在媒体中心可以选择字幕插件,还是找不到字幕,或者下载不了字幕,大多数可能性是 迅雷 射手 网站根据 hash 匹配,您的影片没有相应的字幕,或者是 返回的 下载 URL 失效无法下载导致

我在 WINDOWS 版本中没有放 meta.json ,当服务器启动时,他自动生成了一个

meta.zip

dechunwang commented 2 years ago

@91270 jellyfin 1.8.0 Linux下的docker里面出现malfunction. 尝试在plugins里面创建Meiamsub目录, 并且把两个DLL 加入文件夹, 重启后出现malfunction。 @jjm2473提供的适配版本 10.8.0 下可以正常使用

错误log应该是这个:

[2022-04-10 03:34:49.882 +00:00] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: "MeiamSub.Shooter" "1.0.5.0"
[2022-04-10 03:34:49.891 +00:00] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: "MeiamSub.Thunder" "1.0.5.0"
[2022-04-10 03:34:49.938 +00:00] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: "Open Subtitles" "18.0.0.0"
[2022-04-10 03:34:49.941 +00:00] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: "TMDb" "10.8.0.0"
[2022-04-10 03:34:49.943 +00:00] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: "Studio Images" "10.8.0.0"
[2022-04-10 03:34:49.945 +00:00] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: "OMDb" "10.8.0.0"
[2022-04-10 03:34:49.947 +00:00] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: "MusicBrainz" "10.8.0.0"
[2022-04-10 03:34:49.949 +00:00] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: "AudioDB" "10.8.0.0"
[2022-04-10 03:34:50.236 +00:00] [ERR] [1] Emby.Server.Implementations.ApplicationHost: Error creating "Jellyfin.MeiamSub.Shooter.ShooterProvider"
System.TypeLoadException: Could not load type 'MediaBrowser.Model.Serialization.IJsonSerializer' from assembly 'MediaBrowser.Model, Version=10.8.0.0, Culture=neutral, PublicKeyToken=null'.
   at System.Signature.GetSignature(Void* pCorSig, Int32 cCorSig, RuntimeFieldHandleInternal fieldHandle, IRuntimeMethodInfo methodHandle, RuntimeType declaringType)
   at System.Reflection.RuntimeConstructorInfo.<get_Signature>g__LazyCreateSignature|19_0()
   at System.Reflection.RuntimeConstructorInfo.GetParameters()
   at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type instanceType, Object[] parameters)
   at Emby.Server.Implementations.ApplicationHost.CreateInstanceSafe(Type type)
[2022-04-10 03:34:50.289 +00:00] [ERR] [1] Emby.Server.Implementations.ApplicationHost: Error creating "Jellyfin.MeiamSub.Thunder.ThunderProvider"
System.TypeLoadException: Could not load type 'MediaBrowser.Model.Serialization.IJsonSerializer' from assembly 'MediaBrowser.Model, Version=10.8.0.0, Culture=neutral, PublicKeyToken=null'.
   at System.Signature.GetSignature(Void* pCorSig, Int32 cCorSig, RuntimeFieldHandleInternal fieldHandle, IRuntimeMethodInfo methodHandle, RuntimeType declaringType)
   at System.Reflection.RuntimeConstructorInfo.<get_Signature>g__LazyCreateSignature|19_0()
   at System.Reflection.RuntimeConstructorInfo.GetParameters()
   at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type instanceType, Object[] parameters)
   at Emby.Server.Implementations.ApplicationHost.CreateInstanceSafe(Type type)
[2022-04-10 03:34:50.371 +00:00] [INF] [1] Main: Kestrel listening on "Any IP4 Address"
91270 commented 2 years ago

试试新版本

dechunwang commented 2 years ago

试试新版本

@91270 感谢开发,现在可以用了, 但是有些电影的字幕还是找不到,能否开发搜索zimuku 源之类的。( chineseSubfiner可以找到, 也是用的迅雷,射手和字幕库的源),

[2022-04-11 01:55:27.712 +00:00] [INF] [24] Jellyfin.MeiamSub.Thunder.ThunderProvider: MeiamSub.Thunder Search | Response -> {"sublist":[{"scid":null,"sname":null,"language":null,"rate":null,"surl":null,"svote":0}]}
[2022-04-11 01:55:27.712 +00:00] [INF] [24] Jellyfin.MeiamSub.Thunder.ThunderProvider: MeiamSub.Thunder Search | Summary -> Get  0  Subtitles
[2022-04-11 01:55:27.712 +00:00] [WRN] [24] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from "http://192.168.1.200:8096/Items/552c7eb9660d4af6db71a502ccfa7695/RemoteSearch/Subtitles/chi" to "172.17.0.1" in 0:00:00.9034412 with Status Code 200
[2022-04-11 01:55:31.034 +00:00] [INF] [24] Jellyfin.MeiamSub.Shooter.ShooterProvider: MeiamSub.Shooter Search | SubtitleSearchRequest -> {"Language":"chi","TwoLetterISOLanguageName":"zh","ContentType":1,"MediaPath":"/video/Dont.Look.Up.2021.1080p.NF.WEB-DL.DDP5.1.Atmos.x264-EVO[TGx]/Dont.Look.Up.2021.1080p.NF.WEB-DL.DDP5.1.Atmos.x264-EVO.mkv","SeriesName":null,"Name":"\u4E0D\u8981\u62AC\u5934","IndexNumber":null,"IndexNumberEnd":null,"ParentIndexNumber":null,"ProductionYear":2021,"RuntimeTicks":85914877952,"IsPerfectMatch":false,"ProviderIds":{"Tmdb":"646380","Imdb":"tt11286314"},"SearchAllProviders":true,"DisabledSubtitleFetchers":[],"SubtitleFetcherOrder":[],"IsAutomated":false}
[2022-04-11 01:55:31.036 +00:00] [INF] [24] Jellyfin.MeiamSub.Shooter.ShooterProvider: MeiamSub.Shooter Search | Request -> {"Version":"1.1","VersionPolicy":0,"Content":{"Headers":[{"Key":"Content-Type","Value":["application/json; charset=utf-8"]}]},"Method":{"Method":"POST"},"RequestUri":"http://www.shooter.cn/api/subapi.php","Headers":[{"Key":"User-Agent","Value":["MeiamSub.Shooter"]},{"Key":"Accept","Value":["*/*"]}],"Properties":{},"Options":{}}
[2022-04-11 01:55:31.038 +00:00] [INF] [24] Jellyfin.MeiamSub.Thunder.ThunderProvider: MeiamSub.Thunder Search | SubtitleSearchRequest -> {"Language":"chi","TwoLetterISOLanguageName":"zh","ContentType":1,"MediaPath":"/video/Dont.Look.Up.2021.1080p.NF.WEB-DL.DDP5.1.Atmos.x264-EVO[TGx]/Dont.Look.Up.2021.1080p.NF.WEB-DL.DDP5.1.Atmos.x264-EVO.mkv","SeriesName":null,"Name":"\u4E0D\u8981\u62AC\u5934","IndexNumber":null,"IndexNumberEnd":null,"ParentIndexNumber":null,"ProductionYear":2021,"RuntimeTicks":85914877952,"IsPerfectMatch":false,"ProviderIds":{"Tmdb":"646380","Imdb":"tt11286314"},"SearchAllProviders":true,"DisabledSubtitleFetchers":[],"SubtitleFetcherOrder":[],"IsAutomated":false}
[2022-04-11 01:55:31.203 +00:00] [INF] [23] Jellyfin.MeiamSub.Shooter.ShooterProvider: MeiamSub.Shooter Search | Response -> {"Version":"1.1","Content":{"Headers":[{"Key":"Content-Type","Value":["application/octet-stream"]}]},"StatusCode":200,"ReasonPhrase":"OK","Headers":[{"Key":"Date","Value":["Mon, 11 Apr 2022 01:55:31 GMT"]},{"Key":"Transfer-Encoding","Value":["chunked"]},{"Key":"Connection","Value":["keep-alive"]},{"Key":"X-Cache-Status","Value":["HIT"]}],"TrailingHeaders":[],"RequestMessage":{"Version":"1.1","VersionPolicy":0,"Content":{"Headers":[{"Key":"Content-Type","Value":["application/json; charset=utf-8"]},{"Key":"Content-Length","Value":["332"]}]},"Method":{"Method":"POST"},"RequestUri":"http://www.shooter.cn/api/subapi.php","Headers":[{"Key":"User-Agent","Value":["MeiamSub.Shooter"]},{"Key":"Accept","Value":["*/*"]},{"Key":"traceparent","Value":["00-8a86db4642212c6e441069a35c98d192-b51bca5ca1929f81-00"]}],"Properties":{},"Options":{}},"IsSuccessStatusCode":true}
[2022-04-11 01:55:31.212 +00:00] [INF] [23] Jellyfin.MeiamSub.Shooter.ShooterProvider: MeiamSub.Shooter Search | Summary -> Get  0  Subtitles
[2022-04-11 01:55:31.845 +00:00] [INF] [26] Jellyfin.MeiamSub.Thunder.ThunderProvider: MeiamSub.Thunder Search | Response -> {"Version":"1.1","Content":{"Headers":[{"Key":"Content-Length","Value":["16"]},{"Key":"Content-Type","Value":["application/json; charset=utf-8"]}]},"StatusCode":200,"ReasonPhrase":"OK","Headers":[{"Key":"Connection","Value":["close"]}],"TrailingHeaders":[],"RequestMessage":{"Version":"1.1","VersionPolicy":0,"Content":null,"Method":{"Method":"GET"},"RequestUri":"http://subtitle.kankan.xunlei.com:8000/subxl/D7C6E052ED81CA29850D68D2DFD9D33028D98689.json","Headers":[{"Key":"User-Agent","Value":["MeiamSub.Thunder"]},{"Key":"Accept","Value":["*/*"]},{"Key":"traceparent","Value":["00-8a86db4642212c6e441069a35c98d192-fa73e37be136e3db-00"]}],"Properties":{},"Options":{}},"IsSuccessStatusCode":true}
[2022-04-11 01:55:31.849 +00:00] [INF] [26] Jellyfin.MeiamSub.Thunder.ThunderProvider: MeiamSub.Thunder Search | Response -> {"sublist":[{"scid":null,"sname":null,"language":null,"rate":null,"surl":null,"svote":0}]}
[2022-04-11 01:55:31.849 +00:00] [INF] [26] Jellyfin.MeiamSub.Thunder.ThunderProvider: MeiamSub.Thunder Search | Summary -> Get  0  Subtitles
[2022-04-11 01:55:31.850 +00:00] [WRN] [26] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from "http://192.168.1.200:8096/Items/552c7eb9660d4af6db71a502ccfa7695/RemoteSearch/Subtitles/chi" to "172.17.0.1" in 0:00:00.8189985 with Status Code 200
91270 commented 2 years ago

zimuku 属于非 hash 匹配字幕的方式,不同压制版本时间轴有一定差异,所以字幕不是精确匹配,需要人工校验。所以暂时没有制作

ericvlog commented 5 months ago

zimuku 属于非 hash 匹配字幕的方式,不同压制版本时间轴有一定差异,所以字幕不是精确匹配,需要人工校验。所以暂时没有制作

虽然不是精准,但字幕库是最全的字幕了,大多数找不到字幕的,他都可以找到。