From 66e73a25370bc564cee83a045575ce23f8f3e7f3 Mon Sep 17 00:00:00 2001
From: leiurayer <1432593898@qq.com>
Date: Thu, 7 Sep 2023 01:12:27 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EGetVideoViewInfo=20API?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../Api/Video/TestVideoInfo.cs                |   28 +
 .../Api/Models/User/UserSpaceInfo.cs          |    4 +-
 src/BiliSharp/Api/Models/Video/VideoView.cs   | 3257 +++++++++++++++++
 src/BiliSharp/Api/Video/VideoInfo.cs          |   35 +
 4 files changed, 3322 insertions(+), 2 deletions(-)
 create mode 100644 src/BiliSharp.UnitTest/Api/Video/TestVideoInfo.cs
 create mode 100644 src/BiliSharp/Api/Models/Video/VideoView.cs
 create mode 100644 src/BiliSharp/Api/Video/VideoInfo.cs

diff --git a/src/BiliSharp.UnitTest/Api/Video/TestVideoInfo.cs b/src/BiliSharp.UnitTest/Api/Video/TestVideoInfo.cs
new file mode 100644
index 0000000..2ff7549
--- /dev/null
+++ b/src/BiliSharp.UnitTest/Api/Video/TestVideoInfo.cs
@@ -0,0 +1,28 @@
+using BiliSharp.Api.Login;
+using BiliSharp.Api.Sign;
+using BiliSharp.Api.Video;
+
+namespace BiliSharp.UnitTest.Api.Video
+{
+    public class TestVideoInfo
+    {
+        [Fact]
+        public void TestGetVideoViewInfo_Default()
+        {
+            // 设置wbi keys
+            var info = LoginInfo.GetNavigationInfo();
+            var imgKey = info.Data.WbiImg.ImgUrl.Split('/').ToList().Last().Split('.')[0];
+            var subKey = info.Data.WbiImg.SubUrl.Split('/').ToList().Last().Split('.')[0];
+            var keys = new Tuple<string, string>(imgKey, subKey);
+            WbiSign.SetKey(keys);
+
+            string bvid = "BV1Pu4y1y7FA";
+            long aid = 915570400;
+            var videoInfo = VideoInfo.GetVideoViewInfo(bvid, aid);
+
+            Assert.Equal(bvid, videoInfo.Data.View.Bvid);
+            Assert.Equal(aid, videoInfo.Data.View.Aid);
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/src/BiliSharp/Api/Models/User/UserSpaceInfo.cs b/src/BiliSharp/Api/Models/User/UserSpaceInfo.cs
index 9cdd58b..5c5ae1f 100644
--- a/src/BiliSharp/Api/Models/User/UserSpaceInfo.cs
+++ b/src/BiliSharp/Api/Models/User/UserSpaceInfo.cs
@@ -583,13 +583,13 @@ namespace BiliSharp.Api.Models.User
     /// 
     /// </summary>
     public class UserSpaceInfoDataTheme
-    {    }
+    { }
 
     /// <summary>
     /// 
     /// </summary>
     public class UserSpaceInfoDataSysNotice
-    {    }
+    { }
 
     /// <summary>
     /// 
diff --git a/src/BiliSharp/Api/Models/Video/VideoView.cs b/src/BiliSharp/Api/Models/Video/VideoView.cs
new file mode 100644
index 0000000..33694b3
--- /dev/null
+++ b/src/BiliSharp/Api/Models/Video/VideoView.cs
@@ -0,0 +1,3257 @@
+using System.Collections.Generic;
+using System.Text.Json.Serialization;
+
+namespace BiliSharp.Api.Models.Video
+{
+    /// <summary>
+    /// https://api.bilibili.com/x/web-interface/wbi/view/detail?platform=web&bvid=BV1Pu4y1y7FA&aid=872233698&need_operation_card=1&web_rm_repeat=1&need_elec=1&out_referer=&page_no=1&p=1&web_location=1446382&w_rid=b9d75e9f42896cc2093f022e5e9b1fd2&wts=1694017091
+    /// </summary>
+    public class VideoView
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("code")]
+        public int Code { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("message")]
+        public string Message { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ttl")]
+        public int Ttl { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("data")]
+        public VideoViewData Data { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewData
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("View")]
+        public VideoViewDataView View { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("Card")]
+        public VideoViewDataCard Card { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("Tags")]
+        public List<VideoViewDataTags> Tags { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("Reply")]
+        public VideoViewDataReply Reply { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("Related")]
+        public List<VideoViewDataRelated> Related { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("Spec")]
+        public object Spec { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("hot_share")]
+        public VideoViewDataHotShare HotShare { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("elec")]
+        public VideoViewDataElec Elec { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("recommend")]
+        public object Recommend { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        //[JsonPropertyName("view_addit")]
+        //public VideoViewDataViewAddit ViewAddit { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("guide")]
+        public object Guide { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("query_tags")]
+        public object QueryTags { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_old_user")]
+        public bool IsOldUser { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataView
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("bvid")]
+        public string Bvid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("aid")]
+        public long Aid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("videos")]
+        public int Videos { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("tid")]
+        public int Tid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("tname")]
+        public string Tname { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("copyright")]
+        public int Copyright { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("pic")]
+        public string Pic { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("title")]
+        public string Title { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("pubdate")]
+        public long Pubdate { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ctime")]
+        public long Ctime { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("desc")]
+        public string Desc { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("desc_v2")]
+        public List<VideoViewDataViewDescV2> DescV2 { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("state")]
+        public int State { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("duration")]
+        public int Duration { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("mission_id")]
+        public long MissionId { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("rights")]
+        public VideoViewDataViewRights Rights { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("owner")]
+        public VideoViewDataViewOwner Owner { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("stat")]
+        public VideoViewDataViewStat Stat { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("dynamic")]
+        public string Dynamic { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("cid")]
+        public long Cid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("dimension")]
+        public VideoViewDataViewDimension Dimension { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("season_id")]
+        public long SeasonId { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("premiere")]
+        public object Premiere { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("teenage_mode")]
+        public int TeenageMode { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_chargeable_season")]
+        public bool IsChargeableSeason { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_story")]
+        public bool IsStory { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_upower_exclusive")]
+        public bool IsUpowerExclusive { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_upower_play")]
+        public bool IsUpowerPlay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("enable_vt")]
+        public int EnableVt { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vt_display")]
+        public string VtDisplay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("no_cache")]
+        public bool NoCache { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("pages")]
+        public List<VideoViewDataViewPages> Pages { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("subtitle")]
+        public VideoViewDataViewSubtitle Subtitle { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("label")]
+        public VideoViewDataViewLabel Label { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("staff")]
+        public List<VideoViewDataViewStaff> Staff { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ugc_season")]
+        public VideoViewDataViewUgcSeason UgcSeason { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_season_display")]
+        public bool IsSeasonDisplay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("user_garb")]
+        public VideoViewDataViewUserGarb UserGarb { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("honor_reply")]
+        public VideoViewDataViewHonorReply HonorReply { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("like_icon")]
+        public string LikeIcon { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("need_jump_bv")]
+        public bool NeedJumpBv { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("disable_show_up_info")]
+        public bool DisableShowUpInfo { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewDescV2
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("raw_text")]
+        public string RawText { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("type")]
+        public int Type { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("biz_id")]
+        public int BizId { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewRights
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("bp")]
+        public int Bp { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("elec")]
+        public int Elec { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("download")]
+        public int Download { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("movie")]
+        public int Movie { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("pay")]
+        public int Pay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("hd5")]
+        public int Hd5 { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("no_reprint")]
+        public int NoReprint { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("autoplay")]
+        public int Autoplay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ugc_pay")]
+        public int UgcPay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_cooperation")]
+        public int IsCooperation { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ugc_pay_preview")]
+        public int UgcPayPreview { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("no_background")]
+        public int NoBackground { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("clean_mode")]
+        public int CleanMode { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_stein_gate")]
+        public int IsSteinGate { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_360")]
+        public int Is360 { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("no_share")]
+        public int NoShare { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("arc_pay")]
+        public int ArcPay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("free_watch")]
+        public int FreeWatch { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewOwner
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("mid")]
+        public long Mid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("name")]
+        public string Name { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("face")]
+        public string Face { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewStat
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("aid")]
+        public long Aid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("view")]
+        public long View { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("danmaku")]
+        public int Danmaku { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("reply")]
+        public int Reply { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("favorite")]
+        public int Favorite { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("coin")]
+        public int Coin { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("share")]
+        public int Share { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("now_rank")]
+        public int NowRank { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("his_rank")]
+        public int HisRank { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("like")]
+        public int Like { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("dislike")]
+        public int Dislike { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("evaluation")]
+        public string Evaluation { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("argue_msg")]
+        public string ArgueMsg { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vt")]
+        public int Vt { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewDimension
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("width")]
+        public int Width { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("height")]
+        public int Height { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("rotate")]
+        public int Rotate { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewPages
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("cid")]
+        public long Cid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("page")]
+        public int Page { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("from")]
+        public string From { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("part")]
+        public string Part { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("duration")]
+        public int Duration { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vid")]
+        public string Vid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("weblink")]
+        public string Weblink { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("dimension")]
+        public VideoViewDataViewPagesDimension Dimension { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("first_frame")]
+        public string FirstFrame { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewPagesDimension
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("width")]
+        public int Width { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("height")]
+        public int Height { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("rotate")]
+        public int Rotate { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewSubtitle
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("allow_submit")]
+        public bool AllowSubmit { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("list")]
+        public List<object> List { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewLabel
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("type")]
+        public int Type { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewStaff
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("mid")]
+        public long Mid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("title")]
+        public string Title { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("name")]
+        public string Name { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("face")]
+        public string Face { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vip")]
+        public VideoViewDataViewStaffVip Vip { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("official")]
+        public VideoViewDataViewStaffOfficial Official { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("follower")]
+        public long Follower { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("label_style")]
+        public int LabelStyle { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewStaffVip
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("type")]
+        public int Type { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("status")]
+        public int Status { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("due_date")]
+        public long DueDate { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vip_pay_type")]
+        public int VipPayType { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("theme_type")]
+        public int ThemeType { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("label")]
+        public VideoViewDataViewStaffVipLabel Label { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("avatar_subscript")]
+        public int AvatarSubscript { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("nickname_color")]
+        public string NicknameColor { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("role")]
+        public int Role { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("avatar_subscript_url")]
+        public string AvatarSubscriptUrl { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("tv_vip_status")]
+        public int TvVipStatus { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("tv_vip_pay_type")]
+        public int TvVipPayType { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("tv_due_date")]
+        public int TvDueDate { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewStaffVipLabel
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("path")]
+        public string Path { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("text")]
+        public string Text { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("label_theme")]
+        public string LabelTheme { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("text_color")]
+        public string TextColor { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("bg_style")]
+        public int BgStyle { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("bg_color")]
+        public string BgColor { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("border_color")]
+        public string BorderColor { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("use_img_label")]
+        public bool UseImgLabel { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("img_label_uri_hans")]
+        public string ImgLabelUriHans { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("img_label_uri_hant")]
+        public string ImgLabelUriHant { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("img_label_uri_hans_static")]
+        public string ImgLabelUriHansStatic { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("img_label_uri_hant_static")]
+        public string ImgLabelUriHantStatic { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewStaffOfficial
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("role")]
+        public int Role { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("title")]
+        public string Title { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("desc")]
+        public string Desc { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("type")]
+        public int Type { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewUgcSeason
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("id")]
+        public long Id { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("title")]
+        public string Title { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("cover")]
+        public string Cover { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("mid")]
+        public long Mid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("intro")]
+        public string Intro { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("sign_state")]
+        public int SignState { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("attribute")]
+        public int Attribute { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("sections")]
+        public List<VideoViewDataViewUgcSeasonSections> Sections { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("stat")]
+        public VideoViewDataViewUgcSeasonStat Stat { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ep_count")]
+        public int EpCount { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("season_type")]
+        public int SeasonType { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_pay_season")]
+        public bool IsPaySeason { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("enable_vt")]
+        public int EnableVt { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewUgcSeasonSections
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("season_id")]
+        public long SeasonId { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("id")]
+        public long Id { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("title")]
+        public string Title { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("type")]
+        public int Type { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("episodes")]
+        public List<VideoViewDataViewUgcSeasonSectionsEpisodes> Episodes { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewUgcSeasonSectionsEpisodes
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("season_id")]
+        public long SeasonId { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("section_id")]
+        public long SectionId { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("id")]
+        public long Id { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("aid")]
+        public long Aid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("cid")]
+        public long Cid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("title")]
+        public string Title { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("attribute")]
+        public int Attribute { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("arc")]
+        public VideoViewDataViewUgcSeasonSectionsEpisodesArc Arc { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("page")]
+        public VideoViewDataViewUgcSeasonSectionsEpisodesPage Page { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("bvid")]
+        public string Bvid { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewUgcSeasonSectionsEpisodesArc
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("aid")]
+        public long Aid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("videos")]
+        public int Videos { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("type_id")]
+        public int TypeId { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("type_name")]
+        public string TypeName { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("copyright")]
+        public int Copyright { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("pic")]
+        public string Pic { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("title")]
+        public string Title { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("pubdate")]
+        public long Pubdate { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ctime")]
+        public long Ctime { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("desc")]
+        public string Desc { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("state")]
+        public int State { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("duration")]
+        public int Duration { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("rights")]
+        public VideoViewDataViewUgcSeasonSectionsEpisodesArcRights Rights { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("author")]
+        public VideoViewDataViewUgcSeasonSectionsEpisodesArcAuthor Author { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("stat")]
+        public VideoViewDataViewUgcSeasonSectionsEpisodesArcStat Stat { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("dynamic")]
+        public string Dynamic { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("dimension")]
+        public VideoViewDataViewUgcSeasonSectionsEpisodesArcDimension Dimension { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("desc_v2")]
+        public object DescV2 { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_chargeable_season")]
+        public bool IsChargeableSeason { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_blooper")]
+        public bool IsBlooper { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("enable_vt")]
+        public int EnableVt { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vt_display")]
+        public string VtDisplay { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewUgcSeasonSectionsEpisodesArcRights
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("bp")]
+        public int Bp { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("elec")]
+        public int Elec { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("download")]
+        public int Download { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("movie")]
+        public int Movie { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("pay")]
+        public int Pay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("hd5")]
+        public int Hd5 { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("no_reprint")]
+        public int NoReprint { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("autoplay")]
+        public int Autoplay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ugc_pay")]
+        public int UgcPay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_cooperation")]
+        public int IsCooperation { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ugc_pay_preview")]
+        public int UgcPayPreview { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("arc_pay")]
+        public int ArcPay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("free_watch")]
+        public int FreeWatch { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewUgcSeasonSectionsEpisodesArcAuthor
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("mid")]
+        public int Mid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("name")]
+        public string Name { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("face")]
+        public string Face { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewUgcSeasonSectionsEpisodesArcStat
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("aid")]
+        public long Aid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("view")]
+        public long View { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("danmaku")]
+        public int Danmaku { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("reply")]
+        public int Reply { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("fav")]
+        public int Fav { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("coin")]
+        public int Coin { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("share")]
+        public int Share { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("now_rank")]
+        public int NowRank { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("his_rank")]
+        public int HisRank { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("like")]
+        public long Like { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("dislike")]
+        public int Dislike { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("evaluation")]
+        public string Evaluation { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("argue_msg")]
+        public string ArgueMsg { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vt")]
+        public int Vt { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vv")]
+        public long Vv { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewUgcSeasonSectionsEpisodesArcDimension
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("width")]
+        public int Width { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("height")]
+        public int Height { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("rotate")]
+        public int Rotate { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewUgcSeasonSectionsEpisodesPage
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("cid")]
+        public long Cid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("page")]
+        public int Page { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("from")]
+        public string From { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("part")]
+        public string Part { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("duration")]
+        public int Duration { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vid")]
+        public string Vid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("weblink")]
+        public string Weblink { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("dimension")]
+        public VideoViewDataViewUgcSeasonSectionsEpisodesPageDimension Dimension { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewUgcSeasonSectionsEpisodesPageDimension
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("width")]
+        public int Width { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("height")]
+        public int Height { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("rotate")]
+        public int Rotate { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewUgcSeasonStat
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("season_id")]
+        public long SeasonId { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("view")]
+        public long View { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("danmaku")]
+        public int Danmaku { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("reply")]
+        public int Reply { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("fav")]
+        public long Fav { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("coin")]
+        public long Coin { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("share")]
+        public long Share { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("now_rank")]
+        public int NowRank { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("his_rank")]
+        public int HisRank { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("like")]
+        public long Like { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vt")]
+        public int Vt { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vv")]
+        public int Vv { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewUserGarb
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("url_image_ani_cut")]
+        public string UrlImageAniCut { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewHonorReply
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("honor")]
+        public List<VideoViewDataViewHonorReplyHonor> Honor { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataViewHonorReplyHonor
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("aid")]
+        public long Aid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("type")]
+        public int Type { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("desc")]
+        public string Desc { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("weekly_recommend_num")]
+        public int WeeklyRecommendNum { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataCard
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("card")]
+        public VideoViewDataCardCard Card { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("space")]
+        public VideoViewDataCardSpace Space { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("following")]
+        public bool Following { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("archive_count")]
+        public int ArchiveCount { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("article_count")]
+        public int ArticleCount { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("follower")]
+        public long Follower { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("like_num")]
+        public long LikeNum { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataCardCard
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("mid")]
+        public string Mid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("name")]
+        public string Name { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("approve")]
+        public bool Approve { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("sex")]
+        public string Sex { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("rank")]
+        public string Rank { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("face")]
+        public string Face { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("face_nft")]
+        public int FaceNft { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("face_nft_type")]
+        public int FaceNftType { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("DisplayRank")]
+        public string Displayrank { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("regtime")]
+        public int Regtime { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("spacesta")]
+        public int Spacesta { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("birthday")]
+        public string Birthday { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("place")]
+        public string Place { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("description")]
+        public string Description { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("article")]
+        public int Article { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("attentions")]
+        public List<object> Attentions { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("fans")]
+        public long Fans { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("friend")]
+        public int Friend { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("attention")]
+        public int Attention { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("sign")]
+        public string Sign { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("level_info")]
+        public VideoViewDataCardCardLevelInfo LevelInfo { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("pendant")]
+        public VideoViewDataCardCardPendant Pendant { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("nameplate")]
+        public VideoViewDataCardCardNameplate Nameplate { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("Official")]
+        public VideoViewDataCardCardOfficial Official { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("official_verify")]
+        public VideoViewDataCardCardOfficialVerify OfficialVerify { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vip")]
+        public VideoViewDataCardCardVip Vip { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_senior_member")]
+        public int IsSeniorMember { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataCardCardLevelInfo
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("current_level")]
+        public int CurrentLevel { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("current_min")]
+        public int CurrentMin { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("current_exp")]
+        public int CurrentExp { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("next_exp")]
+        public int NextExp { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataCardCardPendant
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("pid")]
+        public int Pid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("name")]
+        public string Name { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("image")]
+        public string Image { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("expire")]
+        public int Expire { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("image_enhance")]
+        public string ImageEnhance { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("image_enhance_frame")]
+        public string ImageEnhanceFrame { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataCardCardNameplate
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("nid")]
+        public int Nid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("name")]
+        public string Name { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("image")]
+        public string Image { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("image_small")]
+        public string ImageSmall { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("level")]
+        public string Level { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("condition")]
+        public string Condition { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataCardCardOfficial
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("role")]
+        public int Role { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("title")]
+        public string Title { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("desc")]
+        public string Desc { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("type")]
+        public int Type { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataCardCardOfficialVerify
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("type")]
+        public int Type { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("desc")]
+        public string Desc { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataCardCardVip
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("type")]
+        public int Type { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("status")]
+        public int Status { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("due_date")]
+        public int DueDate { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vip_pay_type")]
+        public int VipPayType { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("theme_type")]
+        public int ThemeType { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("label")]
+        public VideoViewDataCardCardVipLabel Label { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("avatar_subscript")]
+        public int AvatarSubscript { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("nickname_color")]
+        public string NicknameColor { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("role")]
+        public int Role { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("avatar_subscript_url")]
+        public string AvatarSubscriptUrl { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("tv_vip_status")]
+        public int TvVipStatus { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("tv_vip_pay_type")]
+        public int TvVipPayType { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("tv_due_date")]
+        public int TvDueDate { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vipType")]
+        public int Viptype { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vipStatus")]
+        public int Vipstatus { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataCardCardVipLabel
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("path")]
+        public string Path { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("text")]
+        public string Text { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("label_theme")]
+        public string LabelTheme { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("text_color")]
+        public string TextColor { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("bg_style")]
+        public int BgStyle { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("bg_color")]
+        public string BgColor { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("border_color")]
+        public string BorderColor { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("use_img_label")]
+        public bool UseImgLabel { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("img_label_uri_hans")]
+        public string ImgLabelUriHans { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("img_label_uri_hant")]
+        public string ImgLabelUriHant { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("img_label_uri_hans_static")]
+        public string ImgLabelUriHansStatic { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("img_label_uri_hant_static")]
+        public string ImgLabelUriHantStatic { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataCardSpace
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("s_img")]
+        public string SImg { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("l_img")]
+        public string LImg { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataTags
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("tag_id")]
+        public int TagId { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("tag_name")]
+        public string TagName { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("cover")]
+        public string Cover { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("head_cover")]
+        public string HeadCover { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("content")]
+        public string Content { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("short_content")]
+        public string ShortContent { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("type")]
+        public int Type { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("state")]
+        public int State { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ctime")]
+        public int Ctime { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("count")]
+        public VideoViewDataTagsCount Count { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_atten")]
+        public int IsAtten { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("likes")]
+        public int Likes { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("hates")]
+        public int Hates { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("attribute")]
+        public int Attribute { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("liked")]
+        public int Liked { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("hated")]
+        public int Hated { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("extra_attr")]
+        public int ExtraAttr { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("music_id")]
+        public string MusicId { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("tag_type")]
+        public string TagType { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_activity")]
+        public bool IsActivity { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("color")]
+        public string Color { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("alpha")]
+        public int Alpha { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_season")]
+        public bool IsSeason { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("subscribed_count")]
+        public int SubscribedCount { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("archive_count")]
+        public string ArchiveCount { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("featured_count")]
+        public int FeaturedCount { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("jump_url")]
+        public string JumpUrl { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataTagsCount
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("view")]
+        public int View { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("use")]
+        public int Use { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("atten")]
+        public int Atten { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataReply
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("page")]
+        public object Page { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("replies")]
+        public List<VideoViewDataReplyReplies> Replies { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataReplyReplies
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("rpid")]
+        public int Rpid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("oid")]
+        public int Oid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("type")]
+        public int Type { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("mid")]
+        public int Mid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("root")]
+        public int Root { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("parent")]
+        public int Parent { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("dialog")]
+        public int Dialog { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("count")]
+        public int Count { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("rcount")]
+        public int Rcount { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("state")]
+        public int State { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("fansgrade")]
+        public int Fansgrade { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("attr")]
+        public int Attr { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ctime")]
+        public int Ctime { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("like")]
+        public int Like { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("action")]
+        public int Action { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("content")]
+        public object Content { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("replies")]
+        public object Replies { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("assist")]
+        public int Assist { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("show_follow")]
+        public bool ShowFollow { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataRelated
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("aid")]
+        public long Aid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("videos")]
+        public int Videos { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("tid")]
+        public int Tid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("tname")]
+        public string Tname { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("copyright")]
+        public int Copyright { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("pic")]
+        public string Pic { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("title")]
+        public string Title { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("pubdate")]
+        public long Pubdate { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ctime")]
+        public long Ctime { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("desc")]
+        public string Desc { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("state")]
+        public int State { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("duration")]
+        public int Duration { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("mission_id")]
+        public long MissionId { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("rights")]
+        public VideoViewDataRelatedRights Rights { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("owner")]
+        public VideoViewDataRelatedOwner Owner { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("stat")]
+        public VideoViewDataRelatedStat Stat { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("dynamic")]
+        public string Dynamic { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("cid")]
+        public long Cid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("dimension")]
+        public VideoViewDataRelatedDimension Dimension { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("season_id")]
+        public long SeasonId { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("short_link_v2")]
+        public string ShortLinkV2 { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("up_from_v2")]
+        public int UpFromV2 { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("first_frame")]
+        public string FirstFrame { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("pub_location")]
+        public string PubLocation { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("bvid")]
+        public string Bvid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("season_type")]
+        public int SeasonType { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_ogv")]
+        public bool IsOgv { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ogv_info")]
+        public object OgvInfo { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("rcmd_reason")]
+        public string RcmdReason { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("enable_vt")]
+        public int EnableVt { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataRelatedRights
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("bp")]
+        public int Bp { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("elec")]
+        public int Elec { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("download")]
+        public int Download { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("movie")]
+        public int Movie { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("pay")]
+        public int Pay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("hd5")]
+        public int Hd5 { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("no_reprint")]
+        public int NoReprint { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("autoplay")]
+        public int Autoplay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ugc_pay")]
+        public int UgcPay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("is_cooperation")]
+        public int IsCooperation { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("ugc_pay_preview")]
+        public int UgcPayPreview { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("no_background")]
+        public int NoBackground { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("arc_pay")]
+        public int ArcPay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("pay_free_watch")]
+        public int PayFreeWatch { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataRelatedOwner
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("mid")]
+        public long Mid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("name")]
+        public string Name { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("face")]
+        public string Face { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataRelatedStat
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("aid")]
+        public long Aid { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("view")]
+        public long View { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("danmaku")]
+        public int Danmaku { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("reply")]
+        public int Reply { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("favorite")]
+        public int Favorite { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("coin")]
+        public int Coin { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("share")]
+        public int Share { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("now_rank")]
+        public int NowRank { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("his_rank")]
+        public int HisRank { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("like")]
+        public long Like { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("dislike")]
+        public int Dislike { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vt")]
+        public int Vt { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("vv")]
+        public long Vv { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataRelatedDimension
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("width")]
+        public int Width { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("height")]
+        public int Height { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("rotate")]
+        public int Rotate { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataHotShare
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("show")]
+        public bool Show { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("list")]
+        public List<object> List { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataElec
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("show_info")]
+        public VideoViewDataElecShowInfo ShowInfo { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("av_count")]
+        public int AvCount { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("count")]
+        public int Count { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("total_count")]
+        public int TotalCount { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("special_day")]
+        public int SpecialDay { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("display_num")]
+        public int DisplayNum { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataElecShowInfo
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("show")]
+        public bool Show { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("state")]
+        public int State { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("title")]
+        public string Title { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("jump_url")]
+        public string JumpUrl { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("icon")]
+        public string Icon { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("high_level")]
+        public VideoViewDataElecShowInfoHighLevel HighLevel { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class VideoViewDataElecShowInfoHighLevel
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("privilege_type")]
+        public int PrivilegeType { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("level_str")]
+        public string LevelStr { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("title")]
+        public string Title { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("intro")]
+        public string Intro { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        [JsonPropertyName("open")]
+        public bool Open { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    //public class VideoViewDataViewAddit
+    //{
+    //    /// <summary>
+    //    ///
+    //    /// </summary>
+    //    [JsonPropertyName("63")]
+    //    public bool 63 { get; set; }
+
+    //    /// <summary>
+    //    ///
+    //    /// </summary>
+    //    [JsonPropertyName("64")]
+    //    public bool 64 { get; set; }
+
+    //    /// <summary>
+    //    ///
+    //    /// </summary>
+    //    [JsonPropertyName("69")]
+    //    public bool 69 { get; set; }
+
+    //    /// <summary>
+    //    ///
+    //    /// </summary>
+    //    [JsonPropertyName("71")]
+    //    public bool 71 { get; set; }
+
+    //    /// <summary>
+    //    ///
+    //    /// </summary>
+    //    [JsonPropertyName("72")]
+    //    public bool 72 { get; set; }
+    //}
+}
\ No newline at end of file
diff --git a/src/BiliSharp/Api/Video/VideoInfo.cs b/src/BiliSharp/Api/Video/VideoInfo.cs
new file mode 100644
index 0000000..cf29210
--- /dev/null
+++ b/src/BiliSharp/Api/Video/VideoInfo.cs
@@ -0,0 +1,35 @@
+using BiliSharp.Api.Models.Video;
+using BiliSharp.Api.Sign;
+using System.Collections.Generic;
+
+namespace BiliSharp.Api.Video
+{
+    /// <summary>
+    /// 视频基本信息
+    /// </summary>
+    public static class VideoInfo
+    {
+        /// <summary>
+        /// 获取视频超详细信息(web端)
+        /// </summary>
+        /// <param name="bvid"></param>
+        /// <param name="aid"></param>
+        /// <returns></returns>
+        public static VideoView GetVideoViewInfo(string bvid, long aid)
+        {
+            var parameters = new Dictionary<string, object>
+            {
+                { "platform", "web" },
+                //{ "need_operation_card", 1 },
+                //{ "web_location", 1446382 },
+                { "need_elec", 1 },
+                { "aid", aid },
+                { "bvid", bvid },
+            };
+            string query = WbiSign.ParametersToQuery(WbiSign.EncodeWbi(parameters));
+            string url = $"https://api.bilibili.com/x/web-interface/wbi/view/detail?{query}";
+            return Utils.GetData<VideoView>(url);
+        }
+
+    }
+}