From 976ffbaa41b2cf05d77c8e569b29383630e2b36d Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Fri, 1 May 2020 02:43:18 +0200 Subject: [PATCH] Cleaning up --- Kyoo.Common/Models/Episode.cs | 30 ++++++++----------- Kyoo.Common/Models/WatchItem.cs | 31 +++++++++++++++++-- Kyoo/Controllers/LibraryManager.cs | 48 +++++++++++++----------------- 3 files changed, 62 insertions(+), 47 deletions(-) diff --git a/Kyoo.Common/Models/Episode.cs b/Kyoo.Common/Models/Episode.cs index b833f4ca..eab94cc9 100644 --- a/Kyoo.Common/Models/Episode.cs +++ b/Kyoo.Common/Models/Episode.cs @@ -27,9 +27,17 @@ namespace Kyoo.Models [JsonIgnore] public virtual IEnumerable Tracks { get; set; } - public string ShowTitle; //Used in the API response only - public string Link; //Used in the API response only - public string Thumb; //Used in the API response only + public string ShowTitle => Show.Title; // Used in the API response only + public string Link => GetSlug(Show.Slug, SeasonNumber, EpisodeNumber); + public string Thumb + { + get + { + if (Show != null) + return "thumb/" + Link; + return ImgPrimary; + } + } public Episode() @@ -91,21 +99,7 @@ namespace Kyoo.Models { return showSlug + "-s" + seasonNumber + "e" + episodeNumber; } - - public Episode SetLink(string showSlug) - { - Link = GetSlug(showSlug, SeasonNumber, EpisodeNumber); - Thumb = "thumb/" + Link; - return this; - } - - public Episode LoadShowDetails() - { - SetLink(Show.Slug); - ShowTitle = Show.Title; - return this; - } - + public Episode Merge(Episode other) { if (other == null) diff --git a/Kyoo.Common/Models/WatchItem.cs b/Kyoo.Common/Models/WatchItem.cs index 98c460e0..d93c069c 100644 --- a/Kyoo.Common/Models/WatchItem.cs +++ b/Kyoo.Common/Models/WatchItem.cs @@ -27,7 +27,14 @@ namespace Kyoo.Models public WatchItem() { } - public WatchItem(long episodeID, string showTitle, string showSlug, long seasonNumber, long episodeNumber, string title, DateTime? releaseDate, string path) + public WatchItem(long episodeID, + string showTitle, + string showSlug, + long seasonNumber, + long episodeNumber, + string title, + DateTime? releaseDate, + string path) { EpisodeID = episodeID; ShowTitle = showTitle; @@ -42,11 +49,31 @@ namespace Kyoo.Models Link = Episode.GetSlug(ShowSlug, seasonNumber, episodeNumber); } - public WatchItem(long episodeID, string showTitle, string showSlug, long seasonNumber, long episodeNumber, string title, DateTime? releaseDate, string path, Track[] audios, Track[] subtitles) + public WatchItem(long episodeID, + string showTitle, + string showSlug, + long seasonNumber, + long episodeNumber, + string title, + DateTime? releaseDate, + string path, + IEnumerable audios, + IEnumerable subtitles) : this(episodeID, showTitle, showSlug, seasonNumber, episodeNumber, title, releaseDate, path) { Audios = audios; Subtitles = subtitles; } + + public WatchItem(Episode episode) + : this(episode.ID, + episode.Show.Title, + episode.Show.Slug, + episode.SeasonNumber, + episode.EpisodeNumber, + episode.Title, + episode.ReleaseDate, + episode.Path) + { } } } diff --git a/Kyoo/Controllers/LibraryManager.cs b/Kyoo/Controllers/LibraryManager.cs index 12a09c3f..249d495e 100644 --- a/Kyoo/Controllers/LibraryManager.cs +++ b/Kyoo/Controllers/LibraryManager.cs @@ -110,55 +110,51 @@ namespace Kyoo.Controllers public IEnumerable GetEpisodes(string showSlug) { - return from episode in _database.Episodes where episode.Show.Slug == showSlug select episode.SetLink(showSlug); + return _database.Episodes.Where(episode => episode.Show.Slug == showSlug); } public IEnumerable GetEpisodes(string showSlug, long seasonNumber) { - return (from episode in _database.Episodes where episode.SeasonNumber == seasonNumber - && episode.Show.Slug == showSlug select episode) - .OrderBy(x => x.EpisodeNumber) - .Select(x => x.SetLink(showSlug)); + return _database.Episodes.Where(x => x.SeasonNumber == seasonNumber + && x.Show.Slug == showSlug) + .OrderBy(x => x.EpisodeNumber); } public IEnumerable GetEpisodes(long showID, long seasonNumber) { - return from episode in _database.Episodes where episode.ShowID == showID - && episode.SeasonNumber == seasonNumber select episode.SetLink(episode.Show.Slug); + return _database.Episodes.Where(x => x.ShowID == showID + && x.SeasonNumber == seasonNumber); } public Episode GetEpisode(string showSlug, long seasonNumber, long episodeNumber) { - return (from episode in _database.Episodes where episode.EpisodeNumber == episodeNumber - && episode.SeasonNumber == seasonNumber - && episode.Show.Slug == showSlug select episode.SetLink(showSlug)).FirstOrDefault(); + return _database.Episodes.FirstOrDefault(x => x.EpisodeNumber == episodeNumber + && x.SeasonNumber == seasonNumber + && x.Show.Slug == showSlug); } public WatchItem GetWatchItem(string showSlug, long seasonNumber, long episodeNumber, bool complete = true) { - WatchItem item = (from episode in _database.Episodes where episode.SeasonNumber == seasonNumber - && episode.EpisodeNumber == episodeNumber && episode.Show.Slug == showSlug - select new WatchItem(episode.ID, - episode.Show.Title, - episode.Show.Slug, - seasonNumber, - episodeNumber, - episode.Title, - episode.ReleaseDate, - episode.Path)).FirstOrDefault(); + WatchItem item = _database.Episodes.Where(x => x.SeasonNumber == seasonNumber + && x.EpisodeNumber == episodeNumber + && x.Show.Slug == showSlug) + .Select(x => new WatchItem(x)).FirstOrDefault(); + if (item == null) return null; (item.Video, item.Audios, item.Subtitles) = GetStreams(item.EpisodeID, item.Link); - if(episodeNumber > 1) - item.PreviousEpisode = showSlug + "-s" + seasonNumber + "e" + (episodeNumber - 1); - else if(seasonNumber > 1) - item.PreviousEpisode = showSlug + "-s" + (seasonNumber - 1) + "e" + GetSeasonCount(showSlug, seasonNumber - 1); + + if (episodeNumber > 1) + item.PreviousEpisode = Episode.GetSlug(showSlug, seasonNumber, episodeNumber - 1); + else if (seasonNumber > 1) + item.PreviousEpisode = Episode.GetSlug(showSlug, seasonNumber - 1, GetSeasonCount(showSlug, seasonNumber - 1)); if (episodeNumber >= GetSeasonCount(showSlug, seasonNumber)) item.NextEpisode = GetEpisode(showSlug, seasonNumber + 1, 1); else item.NextEpisode = GetEpisode(showSlug, seasonNumber, episodeNumber + 1); + return item; } @@ -257,9 +253,7 @@ namespace Kyoo.Controllers public IEnumerable SearchEpisodes(string searchQuery) { - return (from episode in _database.Episodes where EF.Functions.Like(episode.Title, $"%{searchQuery}%") - select episode.LoadShowDetails()) - .Take(20); + return _database.Episodes.Where(x => EF.Functions.Like(x.Title, $"%{searchQuery}%")).Take(20); } public IEnumerable SearchCollections(string searchQuery)