[CHANGE] Json video parser && video model

This commit is contained in:
max
2025-10-21 16:47:24 +02:00
parent 2b5e93ff8a
commit ed1b7406a6
2 changed files with 79 additions and 1 deletions

View File

@@ -1,34 +1,61 @@
using System.Text.Json.Serialization;
using Manager.YouTube.Models.Innertube;
namespace Manager.YouTube.Models;
public class YouTubeVideo
{
[JsonPropertyName("videoId")]
public required string VideoId { get; set; }
[JsonPropertyName("title")]
public string Title { get; set; } = "";
[JsonPropertyName("description")]
public string Description { get; set; } = "";
[JsonPropertyName("hashTags")]
public string[] HashTags { get; set; } = [];
[JsonPropertyName("viewCount")]
public long ViewCount { get; set; }
[JsonPropertyName("likeCount")]
public long LikeCount { get; set; }
[JsonPropertyName("channelId")]
public string ChannelId { get; set; } = "";
[JsonPropertyName("author")]
public string Author { get; set; } = "";
[JsonPropertyName("playabilityStatus")]
public string PlayabilityStatus { get; set; } = "";
[JsonPropertyName("lengthSeconds")]
public long LengthSeconds { get; set; }
[JsonPropertyName("isOwnerViewing")]
public bool IsOwnerViewing { get; set; }
[JsonPropertyName("allowRating")]
public bool AllowRating { get; set; }
[JsonPropertyName("isCrawlable")]
public bool IsCrawlable { get; set; }
[JsonPropertyName("isPrivate")]
public bool IsPrivate { get; set; }
[JsonPropertyName("isUnpluggedCorpus")]
public bool IsUnpluggedCorpus { get; set; }
[JsonPropertyName("isLive")]
public bool IsLive { get; set; }
public bool IsFamiliySave { get; set; }
[JsonPropertyName("isFamilySafe")]
public bool IsFamilySave { get; set; }
[JsonPropertyName("availableCountries")]
public string[] AvailableCountries { get; set; } = [];
[JsonPropertyName("isUnlisted")]
public bool IsUnlisted { get; set; }
[JsonPropertyName("hasYpcMetadata")]
public bool HasYpcMetadata { get; set; }
[JsonPropertyName("publishDate")]
public DateTime PublishDate { get; set; }
[JsonPropertyName("uploadDate")]
public DateTime UploadDate { get; set; }
[JsonPropertyName("isShortsEligible")]
public bool IsShortsEligible { get; set; }
[JsonPropertyName("category")]
public string Category { get; set; } = "";
public StreamingData StreamingData { get; set; } = new();
[JsonPropertyName("thumbnail")]
public List<WebImage> Thumbnails { get; set; } = [];
public PlayerConfig? PlayerConfig { get; set; }