mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
100 lines
2.5 KiB
C#
100 lines
2.5 KiB
C#
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace Kyoo.Models
|
|
{
|
|
public class WatchItem
|
|
{
|
|
[JsonIgnore] public readonly long EpisodeID = -1;
|
|
|
|
public string ShowTitle;
|
|
public string ShowSlug;
|
|
public long SeasonNumber;
|
|
public long EpisodeNumber;
|
|
public string Title;
|
|
public string Link;
|
|
public DateTime? ReleaseDate;
|
|
[JsonIgnore] public string Path;
|
|
public Episode PreviousEpisode;
|
|
public Episode NextEpisode;
|
|
public bool IsMovie;
|
|
|
|
public string Container;
|
|
public Track Video;
|
|
public IEnumerable<Track> Audios;
|
|
public IEnumerable<Track> Subtitles;
|
|
|
|
public WatchItem() { }
|
|
|
|
public WatchItem(long episodeID,
|
|
string showTitle,
|
|
string showSlug,
|
|
long seasonNumber,
|
|
long episodeNumber,
|
|
string title,
|
|
DateTime? releaseDate,
|
|
string path)
|
|
{
|
|
EpisodeID = episodeID;
|
|
ShowTitle = showTitle;
|
|
ShowSlug = showSlug;
|
|
SeasonNumber = seasonNumber;
|
|
EpisodeNumber = episodeNumber;
|
|
Title = title;
|
|
ReleaseDate = releaseDate;
|
|
Path = path;
|
|
|
|
Container = Path.Substring(Path.LastIndexOf('.') + 1);
|
|
Link = Episode.GetSlug(ShowSlug, seasonNumber, episodeNumber);
|
|
}
|
|
|
|
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)
|
|
{
|
|
if (EpisodeNumber > 1)
|
|
PreviousEpisode = episode.Season.Episodes.FirstOrDefault(x => x.EpisodeNumber == EpisodeNumber - 1);
|
|
else if (SeasonNumber > 1)
|
|
{
|
|
Season previousSeason = episode.Show.Seasons
|
|
.FirstOrDefault(x => x.SeasonNumber == SeasonNumber - 1);
|
|
PreviousEpisode = previousSeason?.Episodes
|
|
.FirstOrDefault(x => x.EpisodeNumber == previousSeason.Episodes.Count());
|
|
}
|
|
|
|
if (EpisodeNumber >= episode.Season.Episodes.Count())
|
|
{
|
|
NextEpisode = episode.Show.Seasons
|
|
.FirstOrDefault(x => x.SeasonNumber == SeasonNumber - 1)?.Episodes
|
|
.FirstOrDefault(x => x.EpisodeNumber == 1);
|
|
}
|
|
else
|
|
NextEpisode = episode.Season.Episodes.FirstOrDefault(x => x.EpisodeNumber == EpisodeNumber + 1);
|
|
}
|
|
}
|
|
}
|