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.InternalAPI;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Kyoo.Models
|
|
{
|
|
public class WatchItem
|
|
{
|
|
[JsonIgnore] public readonly long episodeID;
|
|
|
|
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)
|
|
{
|
|
this.episodeID = episodeID;
|
|
ShowTitle = showTitle;
|
|
ShowSlug = showSlug;
|
|
this.seasonNumber = seasonNumber;
|
|
this.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)
|
|
{
|
|
this.audios = audios;
|
|
this.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;
|
|
}
|
|
}
|
|
}
|