Cleaning up

This commit is contained in:
Zoe Roux 2020-05-01 02:43:18 +02:00
parent 1db5b8b644
commit 976ffbaa41
3 changed files with 62 additions and 47 deletions

View File

@ -27,9 +27,17 @@ namespace Kyoo.Models
[JsonIgnore] public virtual IEnumerable<Track> Tracks { get; set; } [JsonIgnore] public virtual IEnumerable<Track> Tracks { get; set; }
public string ShowTitle; //Used in the API response only public string ShowTitle => Show.Title; // Used in the API response only
public string Link; //Used in the API response only public string Link => GetSlug(Show.Slug, SeasonNumber, EpisodeNumber);
public string Thumb; //Used in the API response only public string Thumb
{
get
{
if (Show != null)
return "thumb/" + Link;
return ImgPrimary;
}
}
public Episode() public Episode()
@ -91,21 +99,7 @@ namespace Kyoo.Models
{ {
return showSlug + "-s" + seasonNumber + "e" + episodeNumber; 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) public Episode Merge(Episode other)
{ {
if (other == null) if (other == null)

View File

@ -27,7 +27,14 @@ namespace Kyoo.Models
public WatchItem() { } 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; EpisodeID = episodeID;
ShowTitle = showTitle; ShowTitle = showTitle;
@ -42,11 +49,31 @@ namespace Kyoo.Models
Link = Episode.GetSlug(ShowSlug, seasonNumber, episodeNumber); 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<Track> audios,
IEnumerable<Track> subtitles)
: this(episodeID, showTitle, showSlug, seasonNumber, episodeNumber, title, releaseDate, path) : this(episodeID, showTitle, showSlug, seasonNumber, episodeNumber, title, releaseDate, path)
{ {
Audios = audios; Audios = audios;
Subtitles = subtitles; 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)
{ }
} }
} }

View File

@ -110,55 +110,51 @@ namespace Kyoo.Controllers
public IEnumerable<Episode> GetEpisodes(string showSlug) public IEnumerable<Episode> 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<Episode> GetEpisodes(string showSlug, long seasonNumber) public IEnumerable<Episode> GetEpisodes(string showSlug, long seasonNumber)
{ {
return (from episode in _database.Episodes where episode.SeasonNumber == seasonNumber return _database.Episodes.Where(x => x.SeasonNumber == seasonNumber
&& episode.Show.Slug == showSlug select episode) && x.Show.Slug == showSlug)
.OrderBy(x => x.EpisodeNumber) .OrderBy(x => x.EpisodeNumber);
.Select(x => x.SetLink(showSlug));
} }
public IEnumerable<Episode> GetEpisodes(long showID, long seasonNumber) public IEnumerable<Episode> GetEpisodes(long showID, long seasonNumber)
{ {
return from episode in _database.Episodes where episode.ShowID == showID return _database.Episodes.Where(x => x.ShowID == showID
&& episode.SeasonNumber == seasonNumber select episode.SetLink(episode.Show.Slug); && x.SeasonNumber == seasonNumber);
} }
public Episode GetEpisode(string showSlug, long seasonNumber, long episodeNumber) public Episode GetEpisode(string showSlug, long seasonNumber, long episodeNumber)
{ {
return (from episode in _database.Episodes where episode.EpisodeNumber == episodeNumber return _database.Episodes.FirstOrDefault(x => x.EpisodeNumber == episodeNumber
&& episode.SeasonNumber == seasonNumber && x.SeasonNumber == seasonNumber
&& episode.Show.Slug == showSlug select episode.SetLink(showSlug)).FirstOrDefault(); && x.Show.Slug == showSlug);
} }
public WatchItem GetWatchItem(string showSlug, long seasonNumber, long episodeNumber, bool complete = true) public WatchItem GetWatchItem(string showSlug, long seasonNumber, long episodeNumber, bool complete = true)
{ {
WatchItem item = (from episode in _database.Episodes where episode.SeasonNumber == seasonNumber WatchItem item = _database.Episodes.Where(x => x.SeasonNumber == seasonNumber
&& episode.EpisodeNumber == episodeNumber && episode.Show.Slug == showSlug && x.EpisodeNumber == episodeNumber
select new WatchItem(episode.ID, && x.Show.Slug == showSlug)
episode.Show.Title, .Select(x => new WatchItem(x)).FirstOrDefault();
episode.Show.Slug,
seasonNumber,
episodeNumber,
episode.Title,
episode.ReleaseDate,
episode.Path)).FirstOrDefault();
if (item == null) if (item == null)
return null; return null;
(item.Video, item.Audios, item.Subtitles) = GetStreams(item.EpisodeID, item.Link); (item.Video, item.Audios, item.Subtitles) = GetStreams(item.EpisodeID, item.Link);
if(episodeNumber > 1)
item.PreviousEpisode = showSlug + "-s" + seasonNumber + "e" + (episodeNumber - 1); if (episodeNumber > 1)
else if(seasonNumber > 1) item.PreviousEpisode = Episode.GetSlug(showSlug, seasonNumber, episodeNumber - 1);
item.PreviousEpisode = showSlug + "-s" + (seasonNumber - 1) + "e" + GetSeasonCount(showSlug, seasonNumber - 1); else if (seasonNumber > 1)
item.PreviousEpisode = Episode.GetSlug(showSlug, seasonNumber - 1, GetSeasonCount(showSlug, seasonNumber - 1));
if (episodeNumber >= GetSeasonCount(showSlug, seasonNumber)) if (episodeNumber >= GetSeasonCount(showSlug, seasonNumber))
item.NextEpisode = GetEpisode(showSlug, seasonNumber + 1, 1); item.NextEpisode = GetEpisode(showSlug, seasonNumber + 1, 1);
else else
item.NextEpisode = GetEpisode(showSlug, seasonNumber, episodeNumber + 1); item.NextEpisode = GetEpisode(showSlug, seasonNumber, episodeNumber + 1);
return item; return item;
} }
@ -257,9 +253,7 @@ namespace Kyoo.Controllers
public IEnumerable<Episode> SearchEpisodes(string searchQuery) public IEnumerable<Episode> SearchEpisodes(string searchQuery)
{ {
return (from episode in _database.Episodes where EF.Functions.Like(episode.Title, $"%{searchQuery}%") return _database.Episodes.Where(x => EF.Functions.Like(x.Title, $"%{searchQuery}%")).Take(20);
select episode.LoadShowDetails())
.Take(20);
} }
public IEnumerable<Collection> SearchCollections(string searchQuery) public IEnumerable<Collection> SearchCollections(string searchQuery)