Created
September 7, 2025 00:13
-
-
Save mshenoy83/334e1fff6fce931beb72c041b4b34fa0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class Episode | |
| { | |
| [JsonPropertyName("id")] | |
| public string Id; | |
| [JsonPropertyName("episode_num")] | |
| public int EpisodeNum; | |
| [JsonPropertyName("title")] | |
| public string Title; | |
| [JsonPropertyName("container_extension")] | |
| public string ContainerExtension; | |
| [JsonPropertyName("info")] | |
| public EpisodeInfo Info; | |
| [JsonPropertyName("custom_sid")] | |
| public string CustomSid; | |
| [JsonPropertyName("added")] | |
| public string Added; | |
| [JsonPropertyName("season")] | |
| public int Season; | |
| [JsonPropertyName("direct_source")] | |
| public string DirectSource; | |
| } | |
| public class EpisodeInfo | |
| { | |
| [JsonPropertyName("tmdb_id")] | |
| public int TmdbId; | |
| [JsonPropertyName("releasedate")] | |
| public string Releasedate; | |
| [JsonPropertyName("duration_secs")] | |
| public int DurationSecs; | |
| [JsonPropertyName("duration")] | |
| public string Duration; | |
| [JsonPropertyName("movie_image")] | |
| public string MovieImage; | |
| [JsonPropertyName("video")] | |
| public VideoInfo Video; | |
| [JsonPropertyName("audio")] | |
| public AudioInfo Audio; | |
| [JsonPropertyName("bitrate")] | |
| public int Bitrate; | |
| [JsonPropertyName("rating")] | |
| public decimal Rating; | |
| [JsonPropertyName("season")] | |
| public string Season; | |
| } | |
| public class Season | |
| { | |
| [JsonPropertyName("air_date")] | |
| public string AirDate; | |
| [JsonPropertyName("episode_count")] | |
| public int EpisodeCount; | |
| [JsonPropertyName("id")] | |
| public int Id; | |
| [JsonPropertyName("name")] | |
| public string Name; | |
| [JsonPropertyName("overview")] | |
| public string Overview; | |
| [JsonPropertyName("season_number")] | |
| public int SeasonNumber; | |
| [JsonPropertyName("vote_average")] | |
| public double VoteAverage; | |
| [JsonPropertyName("cover")] | |
| public string Cover; | |
| [JsonPropertyName("cover_big")] | |
| public string CoverBig; | |
| } | |
| public class SeriesData | |
| { | |
| [JsonPropertyName("seasons")] | |
| public List<Season> Seasons; | |
| [JsonPropertyName("info")] | |
| public SeriesInfo Info; | |
| [JsonPropertyName("episodes")] | |
| public Dictionary<string, List<Episode>> Episodes { get; set; } | |
| } | |
| public class SeriesInfo | |
| { | |
| [JsonPropertyName("name")] | |
| public string Name; | |
| [JsonPropertyName("cover")] | |
| public string Cover; | |
| [JsonPropertyName("plot")] | |
| public string Plot; | |
| [JsonPropertyName("cast")] | |
| public string Cast; | |
| [JsonPropertyName("director")] | |
| public string Director; | |
| [JsonPropertyName("genre")] | |
| public string Genre; | |
| [JsonPropertyName("releaseDate")] | |
| public string ReleaseDate; | |
| [JsonPropertyName("last_modified")] | |
| public string LastModified; | |
| [JsonPropertyName("rating")] | |
| public string Rating; | |
| [JsonPropertyName("rating_5based")] | |
| public int Rating5based; | |
| [JsonPropertyName("backdrop_path")] | |
| public List<string> BackdropPath; | |
| [JsonPropertyName("youtube_trailer")] | |
| public string YoutubeTrailer; | |
| [JsonPropertyName("episode_run_time")] | |
| public string EpisodeRunTime; | |
| [JsonPropertyName("category_id")] | |
| public string CategoryId; | |
| } | |
| public class MovieData | |
| { | |
| [JsonPropertyName("stream_id")] | |
| public int StreamId; | |
| [JsonPropertyName("name")] | |
| public string Name; | |
| [JsonPropertyName("added")] | |
| public string Added; | |
| [JsonPropertyName("category_id")] | |
| public string CategoryId; | |
| [JsonPropertyName("container_extension")] | |
| public string ContainerExtension; | |
| [JsonPropertyName("custom_sid")] | |
| public string CustomSid; | |
| [JsonPropertyName("direct_source")] | |
| public string DirectSource; | |
| } | |
| public class VideoData | |
| { | |
| [JsonPropertyName("info")] | |
| public VideoOnDemandInfo Info; | |
| [JsonPropertyName("movie_data")] | |
| public MovieData MovieData; | |
| } | |
| public class VideoOnDemandInfo | |
| { | |
| [JsonPropertyName("kinopoisk_url")] | |
| public string KinopoiskUrl; | |
| [JsonPropertyName("tmdb_id")] | |
| public string TmdbId; | |
| [JsonPropertyName("name")] | |
| public string Name; | |
| [JsonPropertyName("o_name")] | |
| public string OName; | |
| [JsonPropertyName("cover_big")] | |
| public string CoverBig; | |
| [JsonPropertyName("movie_image")] | |
| public string MovieImage; | |
| [JsonPropertyName("releasedate")] | |
| public string Releasedate; | |
| [JsonPropertyName("episode_run_time")] | |
| public string EpisodeRunTime; | |
| [JsonPropertyName("youtube_trailer")] | |
| public string YoutubeTrailer; | |
| [JsonPropertyName("director")] | |
| public string Director; | |
| [JsonPropertyName("actors")] | |
| public string Actors; | |
| [JsonPropertyName("cast")] | |
| public string Cast; | |
| [JsonPropertyName("description")] | |
| public string Description; | |
| [JsonPropertyName("plot")] | |
| public string Plot; | |
| [JsonPropertyName("age")] | |
| public string Age; | |
| [JsonPropertyName("mpaa_rating")] | |
| public string MpaaRating; | |
| [JsonPropertyName("rating_count_kinopoisk")] | |
| public int RatingCountKinopoisk; | |
| [JsonPropertyName("country")] | |
| public string Country; | |
| [JsonPropertyName("genre")] | |
| public string Genre; | |
| [JsonPropertyName("backdrop_path")] | |
| public List<string> BackdropPath; | |
| [JsonPropertyName("duration_secs")] | |
| public int DurationSecs; | |
| [JsonPropertyName("duration")] | |
| public string Duration; | |
| [JsonPropertyName("video")] | |
| public VideoInfo Video; | |
| [JsonPropertyName("audio")] | |
| public AudioInfo Audio; | |
| [JsonPropertyName("bitrate")] | |
| public int Bitrate; | |
| [JsonPropertyName("rating")] | |
| public string Rating; | |
| } | |
| public class AudioInfo | |
| { | |
| [JsonPropertyName("index")] | |
| public int Index { get; set; } | |
| [JsonPropertyName("codec_name")] | |
| public string CodecName { get; set; } | |
| [JsonPropertyName("codec_long_name")] | |
| public string CodecLongName { get; set; } | |
| [JsonPropertyName("profile")] | |
| public string Profile { get; set; } | |
| [JsonPropertyName("codec_type")] | |
| public string CodecType { get; set; } | |
| [JsonPropertyName("codec_time_base")] | |
| public string CodecTimeBase { get; set; } // present in some APIs | |
| [JsonPropertyName("codec_tag_string")] | |
| public string CodecTagString { get; set; } | |
| [JsonPropertyName("codec_tag")] | |
| public string CodecTag { get; set; } | |
| [JsonPropertyName("sample_fmt")] | |
| public string SampleFmt { get; set; } | |
| [JsonPropertyName("sample_rate")] | |
| public string SampleRate { get; set; } | |
| [JsonPropertyName("channels")] | |
| public int Channels { get; set; } | |
| [JsonPropertyName("channel_layout")] | |
| public string ChannelLayout { get; set; } | |
| [JsonPropertyName("bits_per_sample")] | |
| public int BitsPerSample { get; set; } | |
| [JsonPropertyName("initial_padding")] | |
| public int? InitialPadding { get; set; } | |
| [JsonPropertyName("extradata_size")] | |
| public int? ExtradataSize { get; set; } | |
| [JsonPropertyName("r_frame_rate")] | |
| public string RFrameRate { get; set; } | |
| [JsonPropertyName("avg_frame_rate")] | |
| public string AvgFrameRate { get; set; } | |
| [JsonPropertyName("time_base")] | |
| public string TimeBase { get; set; } | |
| [JsonPropertyName("start_pts")] | |
| public int StartPts { get; set; } | |
| [JsonPropertyName("start_time")] | |
| public string StartTime { get; set; } | |
| [JsonPropertyName("disposition")] | |
| public Disposition Disposition { get; set; } | |
| [JsonPropertyName("tags")] | |
| public Tags Tags { get; set; } | |
| } | |
| public class Category | |
| { | |
| [JsonPropertyName("category_id")] | |
| public string? CategoryId; | |
| [JsonPropertyName("category_name")] | |
| public string? CategoryName; | |
| [JsonPropertyName("parent_id")] | |
| public int? ParentId; | |
| } | |
| public class Disposition | |
| { | |
| [JsonPropertyName("default")] | |
| public int Default { get; set; } | |
| [JsonPropertyName("dub")] | |
| public int Dub { get; set; } | |
| [JsonPropertyName("original")] | |
| public int Original { get; set; } | |
| [JsonPropertyName("comment")] | |
| public int Comment { get; set; } | |
| [JsonPropertyName("lyrics")] | |
| public int Lyrics { get; set; } | |
| [JsonPropertyName("karaoke")] | |
| public int Karaoke { get; set; } | |
| [JsonPropertyName("forced")] | |
| public int Forced { get; set; } | |
| [JsonPropertyName("hearing_impaired")] | |
| public int HearingImpaired { get; set; } | |
| [JsonPropertyName("visual_impaired")] | |
| public int VisualImpaired { get; set; } | |
| [JsonPropertyName("clean_effects")] | |
| public int CleanEffects { get; set; } | |
| [JsonPropertyName("attached_pic")] | |
| public int AttachedPic { get; set; } | |
| [JsonPropertyName("timed_thumbnails")] | |
| public int TimedThumbnails { get; set; } | |
| [JsonPropertyName("captions")] | |
| public int? Captions { get; set; } | |
| [JsonPropertyName("descriptions")] | |
| public int? Descriptions { get; set; } | |
| [JsonPropertyName("metadata")] | |
| public int? Metadata { get; set; } | |
| [JsonPropertyName("dependent")] | |
| public int? Dependent { get; set; } | |
| [JsonPropertyName("still_image")] | |
| public int? StillImage { get; set; } | |
| } | |
| public class MediaCategoryInfo | |
| { | |
| [JsonPropertyName("num")] | |
| public int Num { get; set; } | |
| [JsonPropertyName("name")] | |
| public string? Name { get; set; } | |
| [JsonPropertyName("category_id")] | |
| public required string CategoryId { get; set; } | |
| // 🔹 Stream-specific | |
| [JsonPropertyName("stream_type")] | |
| public string? StreamType { get; set; } | |
| [JsonPropertyName("stream_id")] | |
| public int? StreamId { get; set; } | |
| [JsonPropertyName("stream_icon")] | |
| public string? StreamIcon { get; set; } | |
| [JsonPropertyName("epg_channel_id")] | |
| public string? EpgChannelId { get; set; } | |
| [JsonPropertyName("added")] | |
| public string? Added { get; set; } | |
| [JsonPropertyName("custom_sid")] | |
| public string? CustomSid { get; set; } | |
| [JsonPropertyName("tv_archive")] | |
| public int? TvArchive { get; set; } | |
| [JsonPropertyName("direct_source")] | |
| public string? DirectSource { get; set; } | |
| [JsonPropertyName("tv_archive_duration")] | |
| public object? TvArchiveDuration { get; set; } | |
| // 🔹 Series-specific | |
| [JsonPropertyName("series_id")] | |
| public int? SeriesId { get; set; } | |
| [JsonPropertyName("cover")] | |
| public string? Cover { get; set; } | |
| [JsonPropertyName("plot")] | |
| public string? Plot { get; set; } | |
| [JsonPropertyName("cast")] | |
| public string? Cast { get; set; } | |
| [JsonPropertyName("director")] | |
| public string? Director { get; set; } | |
| [JsonPropertyName("genre")] | |
| public string? Genre { get; set; } | |
| [JsonPropertyName("releaseDate")] | |
| public string? ReleaseDate { get; set; } | |
| [JsonPropertyName("last_modified")] | |
| public string? LastModified { get; set; } | |
| [JsonPropertyName("rating")] | |
| public string? Rating { get; set; } | |
| [JsonPropertyName("rating_5based")] | |
| public double? Rating5based { get; set; } | |
| [JsonPropertyName("backdrop_path")] | |
| public List<string>? BackdropPath { get; set; } | |
| [JsonPropertyName("youtube_trailer")] | |
| public string? YoutubeTrailer { get; set; } | |
| [JsonPropertyName("episode_run_time")] | |
| public string? EpisodeRunTime { get; set; } | |
| [JsonIgnore] | |
| public bool IsSeries => SeriesId.HasValue; | |
| [JsonIgnore] | |
| public bool IsStream => StreamId.HasValue; | |
| } | |
| public class Tags :Dictionary<string, string> { } | |
| public class VideoInfo | |
| { | |
| [JsonPropertyName("index")] | |
| public int Index { get; set; } | |
| [JsonPropertyName("codec_name")] | |
| public string CodecName { get; set; } | |
| [JsonPropertyName("codec_long_name")] | |
| public string CodecLongName { get; set; } | |
| [JsonPropertyName("profile")] | |
| public string Profile { get; set; } | |
| [JsonPropertyName("codec_type")] | |
| public string CodecType { get; set; } | |
| [JsonPropertyName("codec_time_base")] | |
| public string CodecTimeBase { get; set; } | |
| [JsonPropertyName("codec_tag_string")] | |
| public string CodecTagString { get; set; } | |
| [JsonPropertyName("codec_tag")] | |
| public string CodecTag { get; set; } | |
| [JsonPropertyName("width")] | |
| public int Width { get; set; } | |
| [JsonPropertyName("height")] | |
| public int Height { get; set; } | |
| [JsonPropertyName("coded_width")] | |
| public int CodedWidth { get; set; } | |
| [JsonPropertyName("coded_height")] | |
| public int CodedHeight { get; set; } | |
| [JsonPropertyName("closed_captions")] | |
| public int? ClosedCaptions { get; set; } // only sometimes present | |
| [JsonPropertyName("film_grain")] | |
| public int? FilmGrain { get; set; } | |
| [JsonPropertyName("has_b_frames")] | |
| public int HasBFrames { get; set; } | |
| [JsonPropertyName("sample_aspect_ratio")] | |
| public string SampleAspectRatio { get; set; } | |
| [JsonPropertyName("display_aspect_ratio")] | |
| public string DisplayAspectRatio { get; set; } | |
| [JsonPropertyName("pix_fmt")] | |
| public string PixFmt { get; set; } | |
| [JsonPropertyName("level")] | |
| public int Level { get; set; } | |
| [JsonPropertyName("chroma_location")] | |
| public string ChromaLocation { get; set; } | |
| [JsonPropertyName("field_order")] | |
| public string FieldOrder { get; set; } | |
| [JsonPropertyName("refs")] | |
| public int Refs { get; set; } | |
| [JsonPropertyName("is_avc")] | |
| public string IsAvc { get; set; } | |
| [JsonPropertyName("nal_length_size")] | |
| public string NalLengthSize { get; set; } | |
| [JsonPropertyName("r_frame_rate")] | |
| public string RFrameRate { get; set; } | |
| [JsonPropertyName("avg_frame_rate")] | |
| public string AvgFrameRate { get; set; } | |
| [JsonPropertyName("time_base")] | |
| public string TimeBase { get; set; } | |
| [JsonPropertyName("start_pts")] | |
| public int StartPts { get; set; } | |
| [JsonPropertyName("start_time")] | |
| public string StartTime { get; set; } | |
| [JsonPropertyName("bits_per_raw_sample")] | |
| public string BitsPerRawSample { get; set; } | |
| [JsonPropertyName("extradata_size")] | |
| public int? ExtradataSize { get; set; } | |
| [JsonPropertyName("disposition")] | |
| public Disposition Disposition { get; set; } | |
| [JsonPropertyName("tags")] | |
| public Tags Tags { get; set; } | |
| } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment