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 { /// public string Name => "AccurateRatingsProvider"; public Task 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.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; } } }