caryyu / jellyfin-plugin-opendouban

Douban metadata provider for Jellyfin
188 stars 15 forks source link

对于豆瓣暂无评分的电影无法刮擦到jellyfin #34

Closed RockSecLab closed 2 years ago

RockSecLab commented 2 years ago

看过jellyfin的日志,对于暂无评分的电影,rating返回NULL,导致jellyfin报错,无法正常刮擦。

caryyu commented 2 years ago

@RockSecLab 应该是这里导致的:https://github.com/caryyu/douban-openapi-server/blob/cbe109e7a18dadf9de60f782fd1e1e459b3bb9c0/provider/httprequest_provider.py#L67 ,可以尝试做一个判断处理。

RockSecLab commented 2 years ago

在67行后加入了 if rating =='null' : rating = "1.0" 但是rating返回值仍为null

修改成if len(rating) ==0 : rating = "1.0" 以及if len(rating) !=3 : rating = "1.0" if rating.isspace : rating = "1.0" 均会返回"Results Not Found: #豆瓣id"

烦请看下如何正确修改

RockSecLab commented 2 years ago

贴一下Jellyfin的日志

[2022-05-03 04:27:55.438 +00:00] [INF] [59] Jellyfin.Plugin.OpenDouban.Providers.OddbImageProvider: [DOUBAN] GetImages for item: 雪鹰领主 [2022-05-03 04:27:56.305 +00:00] [ERR] [21] MediaBrowser.Providers.Manager.ProviderManager: "OddbImageProvider" failed in GetImageInfos for type "Movie" at "/media/2022/雪鹰领主.mp4" System.Text.Json.JsonException: The JSON value could not be converted to System.Single. Path: $.rating | LineNumber: 0 | BytePositionInLine: 59. ---> System.InvalidOperationException: Cannot get the value of a token type 'Null' as a number. at System.Text.Json.Utf8JsonReader.TryGetSingle(Single& value) at System.Text.Json.Utf8JsonReader.GetSingle() at System.Text.Json.Serialization.JsonConverter1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value) at System.Text.Json.Serialization.Metadata.JsonPropertyInfo1.ReadJsonAndSetMember(Object obj, ReadStack& state, Utf8JsonReader& reader) at System.Text.Json.Serialization.Converters.ObjectDefaultConverter1.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value) at System.Text.Json.Serialization.JsonConverter1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value) 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, Utf8JsonReader& reader, Exception ex) at System.Text.Json.Serialization.JsonConverter1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state) at System.Text.Json.JsonSerializer.ReadCore[TValue](JsonReaderState& readerState, Boolean isFinalBlock, ReadOnlySpan1 buffer, JsonSerializerOptions options, ReadStack& state, JsonConverter converterBase) at System.Text.Json.JsonSerializer.ContinueDeserialize[TValue](ReadBufferState& bufferState, JsonReaderState& jsonReaderState, ReadStack& readStack, JsonConverter converter, JsonSerializerOptions options) at System.Text.Json.JsonSerializer.ReadAllAsync[TValue](Stream utf8Json, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken) at System.Net.Http.Json.HttpContentJsonExtensions.ReadFromJsonAsyncCore[T](HttpContent content, Encoding sourceEncoding, JsonSerializerOptions options, CancellationToken cancellationToken) at Jellyfin.Plugin.OpenDouban.OddbApiClient.GetBySid(String sid, CancellationToken cancellationToken) at Jellyfin.Plugin.OpenDouban.Providers.OddbImageProvider.GetImages(BaseItem item, CancellationToken cancellationToken) at MediaBrowser.Providers.Manager.ProviderManager.GetImages(BaseItem item, IRemoteImageProvider provider, String preferredLanguage, Boolean includeAllLanguages, CancellationToken cancellationToken, Nullable1 type)

caryyu commented 2 years ago

@RockSecLab 该问题已经解决了,服务端 Docker 镜像请尝试使用该版本再试试:caryyu/douban-openapi-server:1e45223