diff --git a/Kyoo.Common/Controllers/IProviderManager.cs b/Kyoo.Common/Controllers/IProviderManager.cs index 0da49676..d3eac31c 100644 --- a/Kyoo.Common/Controllers/IProviderManager.cs +++ b/Kyoo.Common/Controllers/IProviderManager.cs @@ -7,9 +7,9 @@ namespace Kyoo.Controllers public interface IProviderManager { Task GetCollectionFromName(string name, Library library); - Task GetShowFromName(string showName, Library library); + Task GetShowFromName(string showName, string showPath, Library library); Task GetSeason(Show show, long seasonNumber, Library library); - Task GetEpisode(Show show, long seasonNumber, long episodeNumber, long absoluteNumber, Library library); + Task GetEpisode(Show show, string episodePath, long seasonNumber, long episodeNumber, long absoluteNumber, Library library); Task> GetPeople(Show show, Library library); } } \ No newline at end of file diff --git a/Kyoo.Common/Controllers/IThumbnailsManager.cs b/Kyoo.Common/Controllers/IThumbnailsManager.cs index 4144f1ec..b45c06bd 100644 --- a/Kyoo.Common/Controllers/IThumbnailsManager.cs +++ b/Kyoo.Common/Controllers/IThumbnailsManager.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Threading.Tasks; -namespace Kyoo.Controllers.ThumbnailsManager +namespace Kyoo.Controllers { public interface IThumbnailsManager { diff --git a/Kyoo/Controllers/Crawler.cs b/Kyoo/Controllers/Crawler.cs index 35507ead..693b36a9 100644 --- a/Kyoo/Controllers/Crawler.cs +++ b/Kyoo/Controllers/Crawler.cs @@ -2,7 +2,6 @@ using Kyoo.Models; using Microsoft.Extensions.Configuration; using System.Collections.Generic; -using System.Diagnostics; using System.IO; using System.Linq; using System.Text.RegularExpressions; @@ -137,10 +136,7 @@ namespace Kyoo.Controllers if (!libraryManager.IsShowRegistered(showPath, out long showID)) { - Show show = await metadataProvider.GetShowFromName(showTitle, library); - show.Path = showPath; - show.Title = show.Title ?? showTitle; - show.Slug = show.Slug ?? Utility.ToSlug(showTitle); + Show show = await metadataProvider.GetShowFromName(showTitle, showPath, library); showProviderIDs = show.ExternalIDs; showID = libraryManager.RegisterShow(show); @@ -170,15 +166,11 @@ namespace Kyoo.Controllers private async Task RegisterSeason(Show show, long seasonNumber, Library library) { - if (!libraryManager.IsSeasonRegistered(show.ID, seasonNumber, out long seasonID)) - { - Season season = await metadataProvider.GetSeason(show, seasonNumber, library); - season.ShowID = show.ID; - season.SeasonNumber = season.SeasonNumber == -1 ? seasonNumber : season.SeasonNumber; - season.Title ??= $"Season {season.SeasonNumber}"; - seasonID = libraryManager.RegisterSeason(season); - } - + if (libraryManager.IsSeasonRegistered(show.ID, seasonNumber, out long seasonID)) + return seasonID; + + Season season = await metadataProvider.GetSeason(show, seasonNumber, library); + seasonID = libraryManager.RegisterSeason(season); return seasonID; } @@ -188,13 +180,7 @@ namespace Kyoo.Controllers if (seasonNumber != -1) seasonID = await RegisterSeason(show, seasonNumber, library); - Episode episode = await metadataProvider.GetEpisode(show, seasonNumber, episodeNumber, absoluteNumber, library); - episode.ShowID = show.ID; - episode.Path = episodePath; - episode.SeasonNumber = episode.SeasonNumber != -1 ? episode.SeasonNumber : seasonNumber; - episode.EpisodeNumber = episode.EpisodeNumber != -1 ? episode.EpisodeNumber : episodeNumber; - episode.AbsoluteNumber = episode.AbsoluteNumber != -1 ? episode.AbsoluteNumber : absoluteNumber; - + Episode episode = await metadataProvider.GetEpisode(show, episodePath, seasonNumber, episodeNumber, absoluteNumber, library); if (seasonID == -1) seasonID = await RegisterSeason(show, seasonNumber, library); episode.SeasonID = seasonID; diff --git a/Kyoo/Controllers/ProviderManager.cs b/Kyoo/Controllers/ProviderManager.cs index 912253b0..b55ca4fb 100644 --- a/Kyoo/Controllers/ProviderManager.cs +++ b/Kyoo/Controllers/ProviderManager.cs @@ -3,7 +3,6 @@ using Kyoo.Models; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Kyoo.Controllers.ThumbnailsManager; namespace Kyoo.Controllers { @@ -57,21 +56,33 @@ namespace Kyoo.Controllers return await GetMetadata(provider => provider.GetCollectionFromName(name), library, $"the collection {name}"); } - public async Task GetShowFromName(string showName, Library library) + public async Task GetShowFromName(string showName, string showPath, Library library) { Show show = await GetMetadata(provider => provider.GetShowFromName(showName), library, $"the show {showName}"); + show.Path = showPath; + show.Slug = Utility.ToSlug(showName); + show.Title ??= showName; await thumbnailsManager.Validate(show); return show; } public async Task GetSeason(Show show, long seasonNumber, Library library) { - return await GetMetadata(provider => provider.GetSeason(show, seasonNumber), library, $"the season {seasonNumber} of {show.Title}"); + Season season = await GetMetadata(provider => provider.GetSeason(show, seasonNumber), library, $"the season {seasonNumber} of {show.Title}"); + season.ShowID = show.ID; + season.SeasonNumber = season.SeasonNumber == -1 ? seasonNumber : season.SeasonNumber; + season.Title ??= $"Season {season.SeasonNumber}"; + return season; } - public async Task GetEpisode(Show show, long seasonNumber, long episodeNumber, long absoluteNumber, Library library) + public async Task GetEpisode(Show show, string episodePath, long seasonNumber, long episodeNumber, long absoluteNumber, Library library) { Episode episode = await GetMetadata(provider => provider.GetEpisode(show, seasonNumber, episodeNumber, absoluteNumber), library, "an episode"); + episode.ShowID = show.ID; + episode.Path = episodePath; + episode.SeasonNumber = episode.SeasonNumber != -1 ? episode.SeasonNumber : seasonNumber; + episode.EpisodeNumber = episode.EpisodeNumber != -1 ? episode.EpisodeNumber : episodeNumber; + episode.AbsoluteNumber = episode.AbsoluteNumber != -1 ? episode.AbsoluteNumber : absoluteNumber; await thumbnailsManager.Validate(episode); return episode; } diff --git a/Kyoo/Controllers/ThumbnailsManager.cs b/Kyoo/Controllers/ThumbnailsManager.cs index fed87f8a..a3de3c0b 100644 --- a/Kyoo/Controllers/ThumbnailsManager.cs +++ b/Kyoo/Controllers/ThumbnailsManager.cs @@ -2,12 +2,11 @@ using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; -using System.Diagnostics; using System.IO; using System.Net; using System.Threading.Tasks; -namespace Kyoo.Controllers.ThumbnailsManager +namespace Kyoo.Controllers { public class ThumbnailsManager : IThumbnailsManager { @@ -20,7 +19,7 @@ namespace Kyoo.Controllers.ThumbnailsManager public async Task Validate(Show show) { - if (show == null || show.Path == null) + if (show?.Path == null) return null; string localThumb = Path.Combine(show.Path, "poster.jpg"); string localLogo = Path.Combine(show.Path, "logo.png"); diff --git a/Kyoo/Startup.cs b/Kyoo/Startup.cs index b62bff68..e6144cb1 100644 --- a/Kyoo/Startup.cs +++ b/Kyoo/Startup.cs @@ -1,5 +1,4 @@ using Kyoo.Controllers; -using Kyoo.Controllers.ThumbnailsManager; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.SpaServices.AngularCli;