diff --git a/Kyoo/Controllers/Crawler.cs b/Kyoo/Controllers/Crawler.cs index 89fd7559..023b7693 100644 --- a/Kyoo/Controllers/Crawler.cs +++ b/Kyoo/Controllers/Crawler.cs @@ -89,7 +89,8 @@ namespace Kyoo.Controllers { Season season = await GetSeason(show, seasonNumber, library); Episode episode = await GetEpisode(show, season, episodeNumber, absoluteNumber, path, library); - _libraryManager.RegisterEpisode(episode); + if (_libraryManager.RegisterEpisode(episode) == 0) + return; } _libraryManager.RegisterShowLinks(library, collection, show); } @@ -123,18 +124,20 @@ namespace Kyoo.Controllers Season season = _libraryManager.GetSeason(show.Slug, seasonNumber); if (season != null) return await Task.FromResult(season); - season = await _metadataProvider.GetSeason(show, seasonNumber, library); - season.Show = show; - return season; + return await _metadataProvider.GetSeason(show, seasonNumber, library); } private async Task GetEpisode(Show show, Season season, long episodeNumber, long absoluteNumber, string episodePath, Library library) { Episode episode = await _metadataProvider.GetEpisode(show, episodePath, season?.SeasonNumber ?? -1, episodeNumber, absoluteNumber, library); - episode.Show = show; if (season == null) season = await GetSeason(show, episode.SeasonNumber, library); episode.Season = season; + if (season == null) + { + Console.Error.WriteLine("\tError: You don't have any provider that support absolute epiode numbering. Install one and try again."); + return null; + } IEnumerable tracks = await _transcoder.GetTrackInfo(episode.Path); List epTracks = tracks.Where(x => x.Type != StreamType.Subtitle).Concat(GetExtractedSubtitles(episode)).ToList(); diff --git a/Kyoo/Controllers/LibraryManager.cs b/Kyoo/Controllers/LibraryManager.cs index 509416fc..c6b6cc46 100644 --- a/Kyoo/Controllers/LibraryManager.cs +++ b/Kyoo/Controllers/LibraryManager.cs @@ -310,6 +310,8 @@ namespace Kyoo.Controllers #region Write Into The Database public long RegisterCollection(Collection collection) { + if (collection == null) + return 0; if (_database.Entry(collection).State == EntityState.Detached) _database.Collections.Add(collection); _database.SaveChanges(); @@ -318,6 +320,8 @@ namespace Kyoo.Controllers public long RegisterShow(Show show) { + if (show == null) + return 0; if (_database.Entry(show).State == EntityState.Detached) _database.Shows.Add(show); _database.SaveChanges(); @@ -326,6 +330,8 @@ namespace Kyoo.Controllers public long RegisterSeason(Season season) { + if (season == null) + return 0; if (_database.Entry(season).State == EntityState.Detached) _database.Seasons.Add(season); _database.SaveChanges(); @@ -334,6 +340,8 @@ namespace Kyoo.Controllers public long RegisterEpisode(Episode episode) { + if (episode == null) + return 0; if (_database.Entry(episode).State == EntityState.Detached) _database.Episodes.Add(episode); _database.SaveChanges(); diff --git a/Kyoo/Controllers/ProviderManager.cs b/Kyoo/Controllers/ProviderManager.cs index f458c343..1dec849e 100644 --- a/Kyoo/Controllers/ProviderManager.cs +++ b/Kyoo/Controllers/ProviderManager.cs @@ -43,7 +43,7 @@ namespace Kyoo.Controllers try { if (library.Providers.Contains(provider.Name)) - ret.AddRange(await providerCall(provider)); + ret.AddRange(await providerCall(provider) ?? new List()); } catch (Exception ex) { Console.Error.WriteLine($"The provider {provider.Name} coudln't work for {what}. Exception: {ex.Message}"); } @@ -73,7 +73,7 @@ namespace Kyoo.Controllers public async Task GetSeason(Show show, long seasonNumber, Library library) { Season season = await GetMetadata(provider => provider.GetSeason(show, seasonNumber), library, $"the season {seasonNumber} of {show.Title}"); - season.ShowID = show.ID; + season.Show = show; season.SeasonNumber = season.SeasonNumber == -1 ? seasonNumber : season.SeasonNumber; season.Title ??= $"Season {season.SeasonNumber}"; return season; @@ -82,7 +82,7 @@ namespace Kyoo.Controllers 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.Show = show; episode.Path = episodePath; episode.SeasonNumber = episode.SeasonNumber != -1 ? episode.SeasonNumber : seasonNumber; episode.EpisodeNumber = episode.EpisodeNumber != -1 ? episode.EpisodeNumber : episodeNumber; @@ -93,7 +93,7 @@ namespace Kyoo.Controllers public async Task> GetPeople(Show show, Library library) { - IEnumerable people = await GetMetadata(provider => provider.GetPeople(show), library, "unknown data"); + IEnumerable people = await GetMetadata(provider => provider.GetPeople(show), library, $"a cast member of {show.Title}"); people = await _thumbnailsManager.Validate(people.ToList()); return people; } diff --git a/Kyoo/Kyoo.csproj b/Kyoo/Kyoo.csproj index e2ec991c..86d6bde7 100644 --- a/Kyoo/Kyoo.csproj +++ b/Kyoo/Kyoo.csproj @@ -41,8 +41,6 @@ - - @@ -58,16 +56,11 @@ Always - - - - -