metatube-community / jellyfin-plugin-metatube

MetaTube Plugin for Jellyfin/Emby
https://metatube-community.github.io
MIT License
2.83k stars 254 forks source link

[Bug] 不会自动刮削metadata,手动识别仅能加载封面图,jellyfin plugin报错,providerid空缺 #394

Closed TascaQ closed 4 hours ago

TascaQ commented 6 hours ago

Verify steps

MetaTube Plugin Version

2024.612.210.0

MetaTube Server Version

1.2.7

What OS are you seeing the problem on?

Linux

Description

我在backend运行在lxc上,按文档使用docker部署。我的frontend是jellyfin,部署在同一个lxc上,安装了最新版本的jellyfin插件。我的其他电影库能够正确获取metadata并显示。我的metatube插件不能自动获取metadata,手动识别可以搜索到metadata,但是选择provider后,仅能获取封面图片,无法正确加载其他metadata,比如演员和描述。

我尝试通过http请求了如下url:http://x.x.x.x:xxxx/v1/movies/ARZON/1786640?lazy=True 。正确获取了相关的信息,信息如下(我修改了部分内容,因为包含大量敏感词):

{
  "data": {
    "id": "1786XXX",
    "number": "DASS-457",
    "title": "【※閲覧注意】XXXXX厚XXXXXXX用。片XXXXX地XXXXX付XXXXXXXXXXXXXXXXXX。 新井XX,
    "summary": "【※新井XX初XX作品】XXXXXX女子。弱XXXXXXく。ほXXXXXろ。XXXXXXん。XXXXXXXXXXXXXXXXXX",
    "provider": "ARZXX",
    "homepage": "https://www.arzon.jp/item_XXX.html",
    "director": "ZAMXX",
    "actors": [
      "新井XX"
    ],
    "thumb_url": "https://img.arzon.jp/image/1/1786/XXX.jpg",
    "big_thumb_url": "",
    "cover_url": "https://img.arzon.jp/image/1/1786/XXX.jpg",
    "big_cover_url": "",
    "preview_video_url": "",
    "preview_video_hls_url": "",
    "preview_images": [
      "https://img.arzon.jp/image/1/1786/XXX-01.jpg",
      "https://img.arzon.jp/image/1/1786/XXX-02.jpg",
      "https://img.arzon.jp/image/1/1786/XXX-03.jpg",
      "https://img.arzon.jp/image/1/1786/XXX-04.jpg",
      "https://img.arzon.jp/image/1/1786/XXX-05.jpg",
      "https://img.arzon.jp/image/1/1786/XXX-06.jpg",
      "https://img.arzon.jp/image/1/1786/XXX-07.jpg",
      "https://img.arzon.jp/image/1/1786/XXX-08.jpg",
      "https://img.arzon.jp/image/1/1786/XXX-09.jpg",
      "https://img.arzon.jp/image/1/1786/XXX-10.jpg"
    ],
    "maker": "XXX",
    "label": "XXX",
    "series": "",
    "genres": [],
    "score": 0,
    "runtime": 130,
    "release_date": "2024-09-10T00:00:00Z"
  }
}

我认为这意味着我的backend已经从provider ARZXX获取了包含封面、演员、标题、简介在内的部分信息,但未获取到genres。但我的frontend并没有正确显示演员和标题、简介,仅显示封面。如下图: Snipaste_2024-09-21_15-37-35

简单查看了日志,backend应该是正常的,frontend报错信息如下:

[2024-09-21 15:40:18.400 +08:00] [INF] [122] Jellyfin.Plugin.MetaTube.Providers.MovieProvider: Get movie info: "ARZON:1786640"
[2024-09-21 15:40:18.401 +08:00] [ERR] [122] MediaBrowser.Providers.Movies.MovieMetadataService: Error in "MetaTube"
System.ArgumentException: The value cannot be an empty string or composed entirely of whitespace. (Parameter 'value')
   at System.ArgumentException.ThrowNullOrWhiteSpaceException(String argument, String paramName)
   at MediaBrowser.Model.Entities.ProviderIdsExtensions.SetProviderId(IHasProviderIds instance, String name, String value)
   at Jellyfin.Plugin.MetaTube.Providers.MovieProvider.GetMetadata(MovieInfo info, CancellationToken cancellationToken)
   at MediaBrowser.Providers.Manager.MetadataService`2.ExecuteRemoteProviders(MetadataResult`1 temp, String logName, Boolean replaceData, TIdType id, IEnumerable`1 providers, CancellationToken cancellationToken)

MetaTube Server

docker run -d -p 8070:8080 -v $PWD/config:/config --name metatube metatube/metatube-server:latest -dsn /config/metatube.db

Jellyfin/Emby Logs

[2024-09-21 15:40:09.355 +08:00] [INF] [109] Jellyfin.Plugin.MetaTube.Providers.MovieProvider: Search for movie: "DASS-457"
[2024-09-21 15:40:18.326 +08:00] [INF] [122] Jellyfin.Api.Controllers.ItemLookupController: Setting provider id's to item b8ddc04e-cbbc-3ffb-7f99-8b922f917ff5-"DASS-457": [("MetaTube": "ARZON:1786640")]
[2024-09-21 15:40:18.326 +08:00] [INF] [122] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/mnt/media/private/JAV/DASS-457.mp4\" -threads 0 -v warning -print_format json -show_streams -show_chapters -show_format"
[2024-09-21 15:40:18.400 +08:00] [INF] [122] Jellyfin.Plugin.MetaTube.Providers.MovieProvider: Get movie info: "ARZON:1786640"
[2024-09-21 15:40:18.401 +08:00] [ERR] [122] MediaBrowser.Providers.Movies.MovieMetadataService: Error in "MetaTube"
System.ArgumentException: The value cannot be an empty string or composed entirely of whitespace. (Parameter 'value')
   at System.ArgumentException.ThrowNullOrWhiteSpaceException(String argument, String paramName)
   at MediaBrowser.Model.Entities.ProviderIdsExtensions.SetProviderId(IHasProviderIds instance, String name, String value)
   at Jellyfin.Plugin.MetaTube.Providers.MovieProvider.GetMetadata(MovieInfo info, CancellationToken cancellationToken)
   at MediaBrowser.Providers.Manager.MetadataService`2.ExecuteRemoteProviders(MetadataResult`1 temp, String logName, Boolean replaceData, TIdType id, IEnumerable`1 providers, CancellationToken cancellationToken)

MetaTube Server Logs

[ENGINE] 2024/09/21 07:40:13 github.com/metatube-community/metatube-sdk-go/engine/movie.go:142: Search keyword DASS-457: HEYZO(542.614µs):<invalid id> | KIN8(984.184µs):<invalid id> | HeyDouga(1.032561ms):<invalid id> | Gcolle(1.057846ms):<invalid id> | C0930(1.533277ms):<invalid id> | CaribbeancomPR(1.955542ms):<invalid id> | fc2hub(1.98343ms):<invalid keyword> | H0930(2.138579ms):<invalid id> | PACOPACOMAMA(2.158781ms):<invalid id> | Pcolle(2.177654ms):<invalid id> | 10musume(2.208535ms):<invalid id> | Caribbeancom(2.224759ms):<invalid id> | MURAMURA(2.470278ms):<invalid id> | H4610(2.491777ms):<invalid id> | 1Pondo(2.505571ms):<invalid id> | TOKYO-HOT(2.520403ms):<invalid keyword> | Getchu(2.537224ms):<invalid id> | FC2(2.555767ms):<invalid id> | AIRAV(2.558188ms):<invalid keyword> | XXX-AV(2.729291ms):<invalid id> | MYWIFE(3.429792ms):<invalid id> | MGS(928.291087ms):<Forbidden> | JavBus(1.38902541s):<no error> | JAV321(1.403892374s):<no error> | SOD(1.544366589s):<Forbidden> | FALENO(1.657026859s):<no error> | AVBASE(2.252123984s):<no error> | AVE(2.340663433s):<no error> | DAHLIA(2.427483081s):<no error> | DUGA(2.50017928s):<no error> | FANZA(3.068293693s):<not-available-in-your-region> | ARZON(4.110364824s):<no error>
[GORM] 2024/09/21 07:40:13 github.com/metatube-community/metatube-sdk-go/engine/movie.go:27
[0.476ms] [rows:3] SELECT * FROM `movie_metadata` WHERE number = "DASS-457" COLLATE NOCASE OR id = "DASS-457" COLLATE NOCASE
[GIN] 2024/09/21 - 07:40:13 | 200 |  4.111315998s |  192.168.51.193 | GET      "/v1/movies/search?q=DASS-457&provider=&fallback=True"
[GORM] 2024/09/21 07:40:18 github.com/metatube-community/metatube-sdk-go/engine/movie.go:202
[0.356ms] [rows:1] SELECT * FROM `movie_metadata` WHERE provider = "ARZON" AND id = "1786640" COLLATE NOCASE ORDER BY `movie_metadata`.`id` LIMIT 1
[GIN] 2024/09/21 - 07:40:18 | 200 |     466.303µs |  192.168.51.193 | GET      "/v1/movies/ARZON/1786640?lazy=True"
[GORM] 2024/09/21 07:40:18 github.com/metatube-community/metatube-sdk-go/engine/movie.go:202
[0.297ms] [rows:1] SELECT * FROM `movie_metadata` WHERE provider = "ARZON" AND id = "1786640" COLLATE NOCASE ORDER BY `movie_metadata`.`id` LIMIT 1
[GIN] 2024/09/21 - 07:40:18 | 200 |     381.846µs |  192.168.51.193 | GET      "/v1/movies/ARZON/1786640?lazy=True"
[GORM] 2024/09/21 07:40:18 github.com/metatube-community/metatube-sdk-go/engine/movie.go:202
[0.314ms] [rows:1] SELECT * FROM `movie_metadata` WHERE provider = "ARZON" AND id = "1786640" COLLATE NOCASE ORDER BY `movie_metadata`.`id` LIMIT 1
[GIN] 2024/09/21 - 07:40:21 | 200 |  3.212428232s |  192.168.51.193 | GET      "/v1/images/primary/ARZON/1786640?ratio=-1&pos=-1&auto=False&quality=90"
[GORM] 2024/09/21 07:40:21 github.com/metatube-community/metatube-sdk-go/engine/movie.go:202
[0.326ms] [rows:1] SELECT * FROM `movie_metadata` WHERE provider = "ARZON" AND id = "1786640" COLLATE NOCASE ORDER BY `movie_metadata`.`id` LIMIT 1
[GIN] 2024/09/21 - 07:40:22 | 200 |   738.96074ms |  192.168.51.193 | GET      "/v1/images/thumb/ARZON/1786640?ratio=-1&pos=-1&auto=False&quality=90"
[GORM] 2024/09/21 07:40:22 github.com/metatube-community/metatube-sdk-go/engine/movie.go:202
[0.306ms] [rows:1] SELECT * FROM `movie_metadata` WHERE provider = "ARZON" AND id = "1786640" COLLATE NOCASE ORDER BY `movie_metadata`.`id` LIMIT 1
[GIN] 2024/09/21 - 07:40:23 | 200 |  734.289913ms |  192.168.51.193 | GET      "/v1/images/backdrop/ARZON/1786640?ratio=-1&pos=-1&auto=False&quality=90"

How to Reproduce

每次我手动“识别”搜索metadata,都会触发如上报错。我的jellyfin的插件暂时无法自动添加metadata,但我想先解决手动识别的问题。

TascaQ commented 6 hours ago

补充一下,如果我在手动识别的时候选择一个新的provider,backend的log中显示能够正确添加这个provider提供的metadata,信息如下:

[GORM] 2024/09/21 07:33:12 github.com/metatube-community/metatube-sdk-go/engine/movie.go:202 record not found
[0.237ms] [rows:0] SELECT * FROM `movie_metadata` WHERE provider = "JAV321" AND id = "dass00457" COLLATE NOCASE ORDER BY `movie_metadata`.`id` LIMIT 1
[GORM] 2024/09/21 07:33:12 github.com/metatube-community/metatube-sdk-go/engine/movie.go:224
[4.906ms] [rows:1] INSERT INTO `movie_metadata` (`id`,`number`,`title`,`summary`,`provider`,`homepage`,`director`,`actors`,`thumb_url`,`big_thumb_url`,`cover_url`,`big_cover_url`,`preview_video_url`,`preview_video_hls_url`,`preview_images`,`maker`,`label`,`series`,`genres`,`score`,`runtime`,`release_date`,`created_at`,`updated_at`) VALUES ("dass00457","DASS-457","XXXXXXXXX","JAV321","https://www.jav321.com/video/dass00457","","{""新井XXXX""}","http://pics.dmm.co.jp/digital/video/dass00457/dass00457ps.jpg","","http://pics.dmm.co.jp//digital/video/dass00457/dass00457pl.jpg","","","","{""http://pics.dmm.co.jp/digital/video/dass00457/dass00457jp-1.jpg"",""http://pics.dmm.co.jp/digital/video/dass00457/dass00457jp-2.jpg"",""http://pics.dmm.co.jp/digital/video/dass00457/dass00457jp-3.jpg"",""http://pics.dmm.co.jp/digital/video/dass00457/dass00457jp-4.jpg"",""http://pics.dmm.co.jp/digital/video/dass00457/dass00457jp-5.jpg"",""http://pics.dmm.co.jp/digital/video/dass00457/dass00457jp-6.jpg"",""http://pics.dmm.co.jp/digital/video/dass00457/dass00457jp-7.jpg"",""http://pics.dmm.co.jp/digital/video/dass00457/dass00457jp-8.jpg"",""http://pics.dmm.co.jp/digital/video/dass00457/dass00457jp-9.jpg"",""http://pics.dmm.co.jp/digital/video/dass00457/dass00457jp-10.jpg""}","XXXX","","","{}",4,130,"2024-09-10 00:00:00","2024-09-21 07:33:12.624","2024-09-21 07:33:12.624") ON CONFLICT (`id`,`provider`) DO UPDATE SET `updated_at`="2024-09-21 07:33:12.624",`number`=`excluded`.`number`,`title`=`excluded`.`title`,`summary`=`excluded`.`summary`,`homepage`=`excluded`.`homepage`,`director`=`excluded`.`director`,`actors`=`excluded`.`actors`,`thumb_url`=`excluded`.`thumb_url`,`big_thumb_url`=`excluded`.`big_thumb_url`,`cover_url`=`excluded`.`cover_url`,`big_cover_url`=`excluded`.`big_cover_url`,`preview_video_url`=`excluded`.`preview_video_url`,`preview_video_hls_url`=`excluded`.`preview_video_hls_url`,`preview_images`=`excluded`.`preview_images`,`maker`=`excluded`.`maker`,`label`=`excluded`.`label`,`series`=`excluded`.`series`,`genres`=`excluded`.`genres`,`score`=`excluded`.`score`,`runtime`=`excluded`.`runtime`,`release_date`=`excluded`.`release_date`
TascaQ commented 4 hours ago

没事儿了 - - , 看了报错和源码,是jellyfin的问题,我从jellyfin的unstable换成了latest,问题解决了。