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; }
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)

View File

@ -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<Track> audios,
IEnumerable<Track> 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)
{ }
}
}

View File

@ -110,55 +110,51 @@ namespace Kyoo.Controllers
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)
{
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<Episode> 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<Episode> 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<Collection> SearchCollections(string searchQuery)