feat: add verification to channel model

- clean up response models
- change verification status serialization
This commit is contained in:
ThetaDev 2022-10-18 11:45:51 +02:00
parent 4d80dffcd5
commit 9aafb84e0f
35 changed files with 459 additions and 451 deletions

View file

@ -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)]

View file

@ -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")]

View file

@ -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>,

View file

@ -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,
}