47 lines
1.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|