Files
JellyfinAccurateRatingsPlugin/Jellyfin.Plugin.AccurateRatings/AccurateRatingsProvider.cs
2021-08-20 16:23:05 -04:00

47 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
namespace Jellyfin.Plugin.AccurateRatings
{
public class AccurateRatingsProvider : ICustomMetadataProvider<Episode>
{
/// <inheritdoc/>
public string Name => "AccurateRatingsProvider";
public Task<ItemUpdateType> FetchAsync(Episode item, MetadataRefreshOptions options, CancellationToken cancellationToken)
{
if (item.CommunityRating.HasValue)
{
decimal officialRating = (decimal)item.CommunityRating.Value;
item.CommunityRating = (float)ConvertToAccurateRatings(officialRating);
}
return Task.FromResult<ItemUpdateType>(ItemUpdateType.MetadataImport);
}
public decimal ConvertToAccurateRatings(decimal imdbRating)
{
decimal rating = imdbRating;
if (rating >= 5.0m && rating <= 9.4m)
{
return rating - 5.0m;
}
if (rating >= 9.5m)
{
return 5.0m;
}
return 0.0m;
}
}
}