mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
98 lines
3.5 KiB
C#
98 lines
3.5 KiB
C#
using Kyoo.Controllers;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
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 string PreviousEpisode;
|
|
public Episode NextEpisode;
|
|
|
|
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;
|
|
|
|
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) : this(episodeID, showTitle, showSlug, seasonNumber, episodeNumber, title, releaseDate, path)
|
|
{
|
|
Audios = audios;
|
|
Subtitles = subtitles;
|
|
}
|
|
|
|
public static WatchItem FromReader(System.Data.SQLite.SQLiteDataReader reader)
|
|
{
|
|
return new WatchItem((long)reader["id"],
|
|
reader["showTitle"] as string,
|
|
reader["showSlug"] as string,
|
|
(long)reader["seasonNumber"],
|
|
(long)reader["episodeNumber"],
|
|
reader["title"] as string,
|
|
reader["releaseDate"] as DateTime?,
|
|
reader["path"] as string);
|
|
}
|
|
|
|
public WatchItem SetStreams(ILibraryManager libraryManager)
|
|
{
|
|
(Track video, IEnumerable<Track> audios, IEnumerable<Track> subtitles) streams = libraryManager.GetStreams(EpisodeID, Link);
|
|
|
|
Container = Path.Substring(Path.LastIndexOf('.') + 1);
|
|
Video = streams.video;
|
|
Audios = streams.audios;
|
|
Subtitles = streams.subtitles;
|
|
return this;
|
|
}
|
|
|
|
public WatchItem SetPrevious(ILibraryManager libraryManager)
|
|
{
|
|
long lastEp = EpisodeNumber - 1;
|
|
if(lastEp > 0)
|
|
PreviousEpisode = ShowSlug + "-s" + SeasonNumber + "e" + lastEp;
|
|
else if(SeasonNumber > 1)
|
|
{
|
|
int seasonCount = libraryManager.GetSeasonCount(ShowSlug, SeasonNumber - 1);
|
|
PreviousEpisode = ShowSlug + "-s" + (SeasonNumber - 1) + "e" + seasonCount;
|
|
}
|
|
return this;
|
|
}
|
|
|
|
public WatchItem SetNext(ILibraryManager libraryManager)
|
|
{
|
|
long seasonCount = libraryManager.GetSeasonCount(ShowSlug, SeasonNumber);
|
|
if (EpisodeNumber >= seasonCount)
|
|
NextEpisode = libraryManager.GetEpisode(ShowSlug, SeasonNumber + 1, 1);
|
|
else
|
|
NextEpisode = libraryManager.GetEpisode(ShowSlug, SeasonNumber, EpisodeNumber + 1);
|
|
|
|
return this;
|
|
}
|
|
}
|
|
}
|