feat: add verification to channel model
- clean up response models - change verification status serialization
This commit is contained in:
parent
4d80dffcd5
commit
9aafb84e0f
35 changed files with 459 additions and 451 deletions
|
|
@ -120,8 +120,9 @@ pub(crate) struct HeaderRenderer {
|
|||
pub subscriber_count_text: Option<String>,
|
||||
#[serde(default)]
|
||||
pub avatar: Thumbnails,
|
||||
#[serde_as(as = "Option<VecSkipError<_>>")]
|
||||
pub badges: Option<Vec<ChannelBadge>>,
|
||||
#[serde(default)]
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub badges: Vec<ChannelBadge>,
|
||||
#[serde(default)]
|
||||
pub banner: Thumbnails,
|
||||
#[serde(default)]
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
pub(crate) mod channel;
|
||||
pub(crate) mod player;
|
||||
pub(crate) mod playlist;
|
||||
pub(crate) mod playlist_music;
|
||||
// pub(crate) mod playlist_music;
|
||||
pub(crate) mod search;
|
||||
pub(crate) mod trends;
|
||||
pub(crate) mod url_endpoint;
|
||||
|
|
@ -12,7 +12,7 @@ pub(crate) use channel::Channel;
|
|||
pub(crate) use player::Player;
|
||||
pub(crate) use playlist::Playlist;
|
||||
pub(crate) use playlist::PlaylistCont;
|
||||
pub(crate) use playlist_music::PlaylistMusic;
|
||||
// pub(crate) use playlist_music::PlaylistMusic;
|
||||
pub(crate) use search::Search;
|
||||
pub(crate) use trends::Startpage;
|
||||
pub(crate) use trends::Trending;
|
||||
|
|
@ -28,14 +28,11 @@ pub(crate) mod channel_rss;
|
|||
pub(crate) use channel_rss::ChannelRss;
|
||||
|
||||
use serde::Deserialize;
|
||||
use serde_with::{json::JsonString, serde_as, DefaultOnError, VecSkipError};
|
||||
use serde_with::{json::JsonString, serde_as, VecSkipError};
|
||||
|
||||
use crate::error::ExtractionError;
|
||||
use crate::serializer::MapResult;
|
||||
use crate::serializer::{
|
||||
text::{Text, TextComponent},
|
||||
VecLogError,
|
||||
};
|
||||
use crate::serializer::{text::Text, VecLogError};
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
|
|
@ -110,25 +107,6 @@ pub(crate) enum IconType {
|
|||
Like,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct VideoOwner {
|
||||
pub video_owner_renderer: VideoOwnerRenderer,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct VideoOwnerRenderer {
|
||||
pub title: TextComponent,
|
||||
pub thumbnail: Thumbnails,
|
||||
#[serde_as(as = "Option<Text>")]
|
||||
pub subscriber_count_text: Option<String>,
|
||||
#[serde(default)]
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub badges: Vec<ChannelBadge>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ChannelBadge {
|
||||
|
|
@ -201,6 +179,7 @@ pub(crate) struct ResponseContext {
|
|||
|
||||
// YouTube Music
|
||||
|
||||
/*
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
|
|
@ -251,6 +230,7 @@ pub(crate) struct MusicColumn {
|
|||
pub(crate) struct MusicColumnRenderer {
|
||||
pub text: TextComponent,
|
||||
}
|
||||
*/
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
|
|
|
|||
|
|
@ -94,8 +94,6 @@ pub(crate) struct Format {
|
|||
pub audio_quality: Option<AudioQuality>,
|
||||
#[serde_as(as = "Option<JsonString>")]
|
||||
pub audio_sample_rate: Option<u32>,
|
||||
pub audio_channels: Option<u8>,
|
||||
pub loudness_db: Option<f64>,
|
||||
pub audio_track: Option<AudioTrack>,
|
||||
|
||||
pub signature_cipher: Option<String>,
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ use serde::Deserialize;
|
|||
use serde_with::serde_as;
|
||||
use serde_with::{DefaultOnError, VecSkipError};
|
||||
|
||||
use crate::serializer::text::TextComponent;
|
||||
use crate::serializer::{
|
||||
ignore_any,
|
||||
text::{AccessibilityText, AttributedText, Text, TextComponents},
|
||||
|
|
@ -12,9 +13,9 @@ use crate::serializer::{
|
|||
|
||||
use super::{
|
||||
url_endpoint::BrowseEndpoint, ContinuationEndpoint, ContinuationItemRenderer, Icon,
|
||||
MusicContinuation, Thumbnails, VideoOwner,
|
||||
MusicContinuation, Thumbnails,
|
||||
};
|
||||
use super::{ResponseContext, YouTubeListItem};
|
||||
use super::{ChannelBadge, ResponseContext, YouTubeListItem};
|
||||
|
||||
/*
|
||||
#VIDEO DETAILS
|
||||
|
|
@ -175,6 +176,27 @@ pub(crate) struct ToggleButton {
|
|||
pub accessibility_data: String,
|
||||
}
|
||||
|
||||
/// Video channel information
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct VideoOwner {
|
||||
pub video_owner_renderer: VideoOwnerRenderer,
|
||||
}
|
||||
|
||||
/// Video channel information
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct VideoOwnerRenderer {
|
||||
pub title: TextComponent,
|
||||
pub thumbnail: Thumbnails,
|
||||
#[serde_as(as = "Option<Text>")]
|
||||
pub subscriber_count_text: Option<String>,
|
||||
#[serde(default)]
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub badges: Vec<ChannelBadge>,
|
||||
}
|
||||
|
||||
/// Shows additional video metadata. Its only known use is for
|
||||
/// the Creative Commonse License.
|
||||
#[derive(Debug, Deserialize)]
|
||||
|
|
@ -382,13 +404,6 @@ pub(crate) struct CommentItemSectionHeader {
|
|||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CommentItemSectionHeaderRenderer {
|
||||
/// Approximate comment count (e.g. `81`, `2.2K`, `705K`)
|
||||
///
|
||||
/// The accurate count is included in the first comment response.
|
||||
///
|
||||
/// Is `None` if there are no comments.
|
||||
#[serde_as(as = "Option<Text>")]
|
||||
pub contextual_info: Option<String>,
|
||||
pub menu: CommentItemSectionHeaderMenu,
|
||||
}
|
||||
|
||||
|
|
|
|||
Reference in a new issue