Compare commits
No commits in common. "9aafb84e0f658a8973d689c7aef0158c3226e510" and "55861739dc9708da26a2c5053330d0cf990f4923" have entirely different histories.
9aafb84e0f
...
55861739dc
43 changed files with 669 additions and 677 deletions
|
@ -300,7 +300,6 @@ fn map_channel<T>(
|
|||
.subscriber_count_text
|
||||
.and_then(|txt| util::parse_large_numstr(&txt, lang)),
|
||||
avatar: header.avatar.into(),
|
||||
verification: header.badges.into(),
|
||||
description: metadata.description,
|
||||
tags: microformat.microformat_data_renderer.tags,
|
||||
vanity_url,
|
||||
|
@ -334,7 +333,6 @@ fn map_channel<T>(
|
|||
.and_then(|txt| util::parse_large_numstr(txt, lang))
|
||||
}),
|
||||
avatar: hdata.map(|hdata| hdata.1.into()).unwrap_or_default(),
|
||||
verification: crate::model::Verification::None,
|
||||
description: metadata.description,
|
||||
tags: microformat.microformat_data_renderer.tags,
|
||||
vanity_url,
|
||||
|
|
|
@ -12,7 +12,7 @@ use crate::serializer::{text::Text, MapResult, VecLogError};
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Channel {
|
||||
pub struct Channel {
|
||||
#[serde(default)]
|
||||
#[serde_as(as = "DefaultOnError")]
|
||||
pub header: Option<Header>,
|
||||
|
@ -25,7 +25,7 @@ pub(crate) struct Channel {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Contents {
|
||||
pub struct Contents {
|
||||
pub two_column_browse_results_renderer: TabsRenderer,
|
||||
}
|
||||
|
||||
|
@ -34,21 +34,21 @@ pub(crate) struct Contents {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TabsRenderer {
|
||||
pub struct TabsRenderer {
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub tabs: Vec<TabRendererWrap>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TabRendererWrap {
|
||||
pub struct TabRendererWrap {
|
||||
pub tab_renderer: ContentRenderer<TabContent>,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TabContent {
|
||||
pub struct TabContent {
|
||||
#[serde(default)]
|
||||
#[serde_as(as = "DefaultOnError")]
|
||||
pub section_list_renderer: Option<SectionListRenderer>,
|
||||
|
@ -60,7 +60,7 @@ pub(crate) struct TabContent {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct SectionListRenderer {
|
||||
pub struct SectionListRenderer {
|
||||
pub contents: Vec<ItemSectionRendererWrap>,
|
||||
/// - **Videos**: browse-feedUC2DjFE7Xf11URZqWBigcVOQvideos (...)
|
||||
/// - **Playlists**: browse-feedUC2DjFE7Xf11URZqWBigcVOQplaylists104 (...)
|
||||
|
@ -72,7 +72,7 @@ pub(crate) struct SectionListRenderer {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct RichGridRenderer {
|
||||
pub struct RichGridRenderer {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
pub contents: MapResult<Vec<YouTubeListItem>>,
|
||||
/// - **Videos**: browse-feedUC2DjFE7Xf11URZqWBigcVOQvideos (...)
|
||||
|
@ -83,14 +83,14 @@ pub(crate) struct RichGridRenderer {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ItemSectionRendererWrap {
|
||||
pub struct ItemSectionRendererWrap {
|
||||
pub item_section_renderer: ContentsRenderer<ChannelContent>,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Default, Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) enum ChannelContent {
|
||||
pub enum ChannelContent {
|
||||
GridRenderer {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
items: MapResult<Vec<YouTubeListItem>>,
|
||||
|
@ -103,7 +103,7 @@ pub(crate) enum ChannelContent {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) enum Header {
|
||||
pub enum Header {
|
||||
C4TabbedHeaderRenderer(HeaderRenderer),
|
||||
/// Used for special channels like YouTube Music
|
||||
CarouselHeaderRenderer(ContentsRenderer<CarouselHeaderRendererItem>),
|
||||
|
@ -112,7 +112,7 @@ pub(crate) enum Header {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct HeaderRenderer {
|
||||
pub struct HeaderRenderer {
|
||||
/// Approximate subscriber count (e.g. `880K subscribers`), depends on language.
|
||||
///
|
||||
/// `None` if the subscriber count is hidden.
|
||||
|
@ -120,9 +120,8 @@ pub(crate) struct HeaderRenderer {
|
|||
pub subscriber_count_text: Option<String>,
|
||||
#[serde(default)]
|
||||
pub avatar: Thumbnails,
|
||||
#[serde(default)]
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub badges: Vec<ChannelBadge>,
|
||||
#[serde_as(as = "Option<VecSkipError<_>>")]
|
||||
pub badges: Option<Vec<ChannelBadge>>,
|
||||
#[serde(default)]
|
||||
pub banner: Thumbnails,
|
||||
#[serde(default)]
|
||||
|
@ -135,7 +134,7 @@ pub(crate) struct HeaderRenderer {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) enum CarouselHeaderRendererItem {
|
||||
pub enum CarouselHeaderRendererItem {
|
||||
#[serde(rename_all = "camelCase")]
|
||||
TopicChannelDetailsRenderer {
|
||||
#[serde_as(as = "Option<Text>")]
|
||||
|
@ -149,13 +148,13 @@ pub(crate) enum CarouselHeaderRendererItem {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Metadata {
|
||||
pub struct Metadata {
|
||||
pub channel_metadata_renderer: ChannelMetadataRenderer,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ChannelMetadataRenderer {
|
||||
pub struct ChannelMetadataRenderer {
|
||||
pub title: String,
|
||||
/// Channel ID
|
||||
pub external_id: String,
|
||||
|
@ -165,13 +164,13 @@ pub(crate) struct ChannelMetadataRenderer {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Microformat {
|
||||
pub struct Microformat {
|
||||
pub microformat_data_renderer: MicroformatDataRenderer,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MicroformatDataRenderer {
|
||||
pub struct MicroformatDataRenderer {
|
||||
#[serde(default)]
|
||||
pub tags: Vec<String>,
|
||||
}
|
||||
|
@ -179,7 +178,7 @@ pub(crate) struct MicroformatDataRenderer {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ChannelFullMetadata {
|
||||
pub struct ChannelFullMetadata {
|
||||
#[serde_as(as = "Text")]
|
||||
pub joined_date_text: String,
|
||||
#[serde_as(as = "Option<Text>")]
|
||||
|
@ -192,7 +191,7 @@ pub(crate) struct ChannelFullMetadata {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct PrimaryLink {
|
||||
pub struct PrimaryLink {
|
||||
#[serde_as(as = "Text")]
|
||||
pub title: String,
|
||||
pub navigation_endpoint: NavigationEndpoint,
|
||||
|
|
|
@ -4,7 +4,7 @@ use serde::Deserialize;
|
|||
use super::Thumbnail;
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub(crate) struct ChannelRss {
|
||||
pub struct ChannelRss {
|
||||
#[serde(rename = "$unflatten=yt:channelId")]
|
||||
pub channel_id: String,
|
||||
#[serde(rename = "$unflatten=title")]
|
||||
|
@ -15,7 +15,7 @@ pub(crate) struct ChannelRss {
|
|||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub(crate) struct Entry {
|
||||
pub struct Entry {
|
||||
#[serde(rename = "$unflatten=yt:videoId")]
|
||||
pub video_id: String,
|
||||
#[serde(rename = "$unflatten=title")]
|
||||
|
@ -29,7 +29,7 @@ pub(crate) struct Entry {
|
|||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub(crate) struct MediaGroup {
|
||||
pub struct MediaGroup {
|
||||
#[serde(rename = "$unflatten=media:thumbnail")]
|
||||
pub thumbnail: Thumbnail,
|
||||
#[serde(rename = "$unflatten=media:description")]
|
||||
|
@ -39,7 +39,7 @@ pub(crate) struct MediaGroup {
|
|||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub(crate) struct Community {
|
||||
pub struct Community {
|
||||
#[serde(rename = "$unflatten=media:starRating")]
|
||||
pub rating: Rating,
|
||||
#[serde(rename = "$unflatten=media:statistics")]
|
||||
|
@ -47,12 +47,12 @@ pub(crate) struct Community {
|
|||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub(crate) struct Rating {
|
||||
pub struct Rating {
|
||||
pub count: u64,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub(crate) struct Statistics {
|
||||
pub struct Statistics {
|
||||
pub views: u64,
|
||||
}
|
||||
|
||||
|
|
|
@ -1,55 +1,58 @@
|
|||
pub(crate) mod channel;
|
||||
pub(crate) mod player;
|
||||
pub(crate) mod playlist;
|
||||
// pub(crate) mod playlist_music;
|
||||
pub(crate) mod search;
|
||||
pub(crate) mod trends;
|
||||
pub(crate) mod url_endpoint;
|
||||
pub(crate) mod video_details;
|
||||
pub(crate) mod video_item;
|
||||
pub mod channel;
|
||||
pub mod player;
|
||||
pub mod playlist;
|
||||
pub mod playlist_music;
|
||||
pub mod search;
|
||||
pub mod trends;
|
||||
pub mod url_endpoint;
|
||||
pub mod video_details;
|
||||
pub mod video_item;
|
||||
|
||||
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 search::Search;
|
||||
pub(crate) use trends::Startpage;
|
||||
pub(crate) use trends::Trending;
|
||||
pub(crate) use url_endpoint::ResolvedUrl;
|
||||
pub(crate) use video_details::VideoComments;
|
||||
pub(crate) use video_details::VideoDetails;
|
||||
pub(crate) use video_item::YouTubeListItem;
|
||||
pub(crate) use video_item::YouTubeListMapper;
|
||||
pub use channel::Channel;
|
||||
pub use player::Player;
|
||||
pub use playlist::Playlist;
|
||||
pub use playlist::PlaylistCont;
|
||||
pub use playlist_music::PlaylistMusic;
|
||||
pub use search::Search;
|
||||
pub use trends::Startpage;
|
||||
pub use trends::Trending;
|
||||
pub use url_endpoint::ResolvedUrl;
|
||||
pub use video_details::VideoComments;
|
||||
pub use video_details::VideoDetails;
|
||||
pub use video_item::YouTubeListItem;
|
||||
pub use video_item::YouTubeListMapper;
|
||||
|
||||
#[cfg(feature = "rss")]
|
||||
pub(crate) mod channel_rss;
|
||||
pub mod channel_rss;
|
||||
#[cfg(feature = "rss")]
|
||||
pub(crate) use channel_rss::ChannelRss;
|
||||
pub use channel_rss::ChannelRss;
|
||||
|
||||
use serde::Deserialize;
|
||||
use serde_with::{json::JsonString, serde_as, VecSkipError};
|
||||
use serde_with::{json::JsonString, serde_as, DefaultOnError, VecSkipError};
|
||||
|
||||
use crate::error::ExtractionError;
|
||||
use crate::serializer::MapResult;
|
||||
use crate::serializer::{text::Text, VecLogError};
|
||||
use crate::serializer::{
|
||||
text::{Text, TextComponent},
|
||||
VecLogError,
|
||||
};
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ContentRenderer<T> {
|
||||
pub struct ContentRenderer<T> {
|
||||
pub content: T,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ContentsRenderer<T> {
|
||||
pub struct ContentsRenderer<T> {
|
||||
#[serde(alias = "tabs")]
|
||||
pub contents: Vec<T>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ThumbnailsWrap {
|
||||
pub struct ThumbnailsWrap {
|
||||
#[serde(default)]
|
||||
pub thumbnail: Thumbnails,
|
||||
}
|
||||
|
@ -58,14 +61,14 @@ pub(crate) struct ThumbnailsWrap {
|
|||
/// Not only used for thumbnails, but also for avatars and banners.
|
||||
#[derive(Default, Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Thumbnails {
|
||||
pub struct Thumbnails {
|
||||
#[serde(default)]
|
||||
pub thumbnails: Vec<Thumbnail>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Thumbnail {
|
||||
pub struct Thumbnail {
|
||||
pub url: String,
|
||||
pub width: u32,
|
||||
pub height: u32,
|
||||
|
@ -73,32 +76,32 @@ pub(crate) struct Thumbnail {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ContinuationItemRenderer {
|
||||
pub struct ContinuationItemRenderer {
|
||||
pub continuation_endpoint: ContinuationEndpoint,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ContinuationEndpoint {
|
||||
pub struct ContinuationEndpoint {
|
||||
pub continuation_command: ContinuationCommand,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ContinuationCommand {
|
||||
pub struct ContinuationCommand {
|
||||
pub token: String,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Icon {
|
||||
pub struct Icon {
|
||||
pub icon_type: IconType,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, Hash)]
|
||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||
pub(crate) enum IconType {
|
||||
pub enum IconType {
|
||||
/// Checkmark for verified channels
|
||||
Check,
|
||||
/// Music note for verified artists
|
||||
|
@ -109,33 +112,52 @@ pub(crate) enum IconType {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ChannelBadge {
|
||||
pub struct VideoOwner {
|
||||
pub video_owner_renderer: VideoOwnerRenderer,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub 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 struct ChannelBadge {
|
||||
pub metadata_badge_renderer: ChannelBadgeRenderer,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ChannelBadgeRenderer {
|
||||
pub struct ChannelBadgeRenderer {
|
||||
pub style: ChannelBadgeStyle,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, Hash)]
|
||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||
pub(crate) enum ChannelBadgeStyle {
|
||||
pub enum ChannelBadgeStyle {
|
||||
BadgeStyleTypeVerified,
|
||||
BadgeStyleTypeVerifiedArtist,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Alert {
|
||||
pub struct Alert {
|
||||
pub alert_renderer: AlertRenderer,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct AlertRenderer {
|
||||
pub struct AlertRenderer {
|
||||
#[serde_as(as = "Text")]
|
||||
pub text: String,
|
||||
}
|
||||
|
@ -145,7 +167,7 @@ pub(crate) struct AlertRenderer {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Continuation {
|
||||
pub struct Continuation {
|
||||
/// Number of search results
|
||||
#[serde_as(as = "Option<JsonString>")]
|
||||
pub estimated_results: Option<u64>,
|
||||
|
@ -159,31 +181,30 @@ pub(crate) struct Continuation {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ContinuationActionWrap {
|
||||
pub struct ContinuationActionWrap {
|
||||
pub append_continuation_items_action: ContinuationAction,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ContinuationAction {
|
||||
pub struct ContinuationAction {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
pub continuation_items: MapResult<Vec<YouTubeListItem>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ResponseContext {
|
||||
pub struct ResponseContext {
|
||||
pub visitor_data: Option<String>,
|
||||
}
|
||||
|
||||
// YouTube Music
|
||||
|
||||
/*
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MusicItem {
|
||||
pub struct MusicItem {
|
||||
pub thumbnail: MusicThumbnailRenderer,
|
||||
#[serde(default)]
|
||||
#[serde_as(deserialize_as = "DefaultOnError")]
|
||||
|
@ -196,28 +217,28 @@ pub(crate) struct MusicItem {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MusicThumbnailRenderer {
|
||||
pub struct MusicThumbnailRenderer {
|
||||
#[serde(alias = "croppedSquareThumbnailRenderer")]
|
||||
pub music_thumbnail_renderer: ThumbnailsWrap,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct PlaylistItemData {
|
||||
pub struct PlaylistItemData {
|
||||
pub video_id: String,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MusicContentsRenderer<T> {
|
||||
pub struct MusicContentsRenderer<T> {
|
||||
pub contents: Vec<T>,
|
||||
#[serde_as(as = "Option<VecSkipError<_>>")]
|
||||
pub continuations: Option<Vec<MusicContinuation>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub(crate) struct MusicColumn {
|
||||
pub struct MusicColumn {
|
||||
#[serde(
|
||||
rename = "musicResponsiveListItemFlexColumnRenderer",
|
||||
alias = "musicResponsiveListItemFixedColumnRenderer"
|
||||
|
@ -227,20 +248,19 @@ pub(crate) struct MusicColumn {
|
|||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub(crate) struct MusicColumnRenderer {
|
||||
pub struct MusicColumnRenderer {
|
||||
pub text: TextComponent,
|
||||
}
|
||||
*/
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MusicContinuation {
|
||||
pub struct MusicContinuation {
|
||||
pub next_continuation_data: MusicContinuationData,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MusicContinuationData {
|
||||
pub struct MusicContinuationData {
|
||||
pub continuation: String,
|
||||
}
|
||||
|
||||
|
@ -292,7 +312,7 @@ impl From<Icon> for crate::model::Verification {
|
|||
}
|
||||
}
|
||||
|
||||
pub(crate) fn alerts_to_err(alerts: Option<Vec<Alert>>) -> ExtractionError {
|
||||
pub fn alerts_to_err(alerts: Option<Vec<Alert>>) -> ExtractionError {
|
||||
match alerts {
|
||||
Some(alerts) => ExtractionError::ContentUnavailable(
|
||||
alerts
|
||||
|
|
|
@ -9,7 +9,7 @@ use crate::serializer::{text::Text, MapResult, VecLogError};
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Player {
|
||||
pub struct Player {
|
||||
pub playability_status: PlayabilityStatus,
|
||||
pub streaming_data: Option<StreamingData>,
|
||||
pub captions: Option<Captions>,
|
||||
|
@ -18,7 +18,7 @@ pub(crate) struct Player {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(tag = "status", rename_all = "SCREAMING_SNAKE_CASE")]
|
||||
pub(crate) enum PlayabilityStatus {
|
||||
pub enum PlayabilityStatus {
|
||||
#[serde(rename_all = "camelCase")]
|
||||
Ok { live_streamability: Option<Empty> },
|
||||
/// Video cant be played because of DRM / Geoblock
|
||||
|
@ -35,12 +35,12 @@ pub(crate) enum PlayabilityStatus {
|
|||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub(crate) struct Empty {}
|
||||
pub struct Empty {}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct StreamingData {
|
||||
pub struct StreamingData {
|
||||
#[serde_as(as = "JsonString")]
|
||||
pub expires_in_seconds: u32,
|
||||
#[serde(default)]
|
||||
|
@ -58,7 +58,7 @@ pub(crate) struct StreamingData {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Format {
|
||||
pub struct Format {
|
||||
pub itag: u32,
|
||||
pub url: Option<String>,
|
||||
|
||||
|
@ -94,6 +94,8 @@ 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>,
|
||||
|
@ -117,7 +119,7 @@ impl Format {
|
|||
|
||||
#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
pub(crate) enum Quality {
|
||||
pub enum Quality {
|
||||
Tiny,
|
||||
Small,
|
||||
Medium,
|
||||
|
@ -130,7 +132,7 @@ pub(crate) enum Quality {
|
|||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
pub(crate) enum AudioQuality {
|
||||
pub enum AudioQuality {
|
||||
#[serde(rename = "AUDIO_QUALITY_LOW", alias = "low")]
|
||||
Low,
|
||||
#[serde(rename = "AUDIO_QUALITY_MEDIUM", alias = "medium")]
|
||||
|
@ -141,7 +143,7 @@ pub(crate) enum AudioQuality {
|
|||
|
||||
#[derive(Default, Clone, Copy, Debug, Deserialize, PartialEq, Eq, Hash)]
|
||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||
pub(crate) enum FormatType {
|
||||
pub enum FormatType {
|
||||
#[default]
|
||||
Default,
|
||||
/// This stream only works via DASH and not via progressive HTTP.
|
||||
|
@ -150,13 +152,13 @@ pub(crate) enum FormatType {
|
|||
|
||||
#[derive(Default, Debug, Deserialize)]
|
||||
#[serde(default, rename_all = "camelCase")]
|
||||
pub(crate) struct ColorInfo {
|
||||
pub struct ColorInfo {
|
||||
pub primaries: Primaries,
|
||||
}
|
||||
|
||||
#[derive(Default, Clone, Copy, Debug, Deserialize, PartialEq, Eq, Hash)]
|
||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||
pub(crate) enum Primaries {
|
||||
pub enum Primaries {
|
||||
#[default]
|
||||
ColorPrimariesBt709,
|
||||
ColorPrimariesBt2020,
|
||||
|
@ -164,7 +166,7 @@ pub(crate) enum Primaries {
|
|||
|
||||
#[derive(Default, Debug, Deserialize)]
|
||||
#[serde(default, rename_all = "camelCase")]
|
||||
pub(crate) struct AudioTrack {
|
||||
pub struct AudioTrack {
|
||||
pub id: String,
|
||||
pub display_name: String,
|
||||
pub audio_is_default: bool,
|
||||
|
@ -172,20 +174,20 @@ pub(crate) struct AudioTrack {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Captions {
|
||||
pub struct Captions {
|
||||
pub player_captions_tracklist_renderer: PlayerCaptionsTracklistRenderer,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct PlayerCaptionsTracklistRenderer {
|
||||
pub struct PlayerCaptionsTracklistRenderer {
|
||||
pub caption_tracks: Vec<CaptionTrack>,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CaptionTrack {
|
||||
pub struct CaptionTrack {
|
||||
pub base_url: String,
|
||||
#[serde_as(as = "Text")]
|
||||
pub name: String,
|
||||
|
@ -195,7 +197,7 @@ pub(crate) struct CaptionTrack {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct VideoDetails {
|
||||
pub struct VideoDetails {
|
||||
pub video_id: String,
|
||||
pub title: String,
|
||||
#[serde_as(as = "JsonString")]
|
||||
|
|
|
@ -12,7 +12,7 @@ use super::{
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Playlist {
|
||||
pub struct Playlist {
|
||||
pub contents: Option<Contents>,
|
||||
pub header: Option<Header>,
|
||||
pub sidebar: Option<Sidebar>,
|
||||
|
@ -23,7 +23,7 @@ pub(crate) struct Playlist {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct PlaylistCont {
|
||||
pub struct PlaylistCont {
|
||||
#[serde(default)]
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub on_response_received_actions: Vec<OnResponseReceivedAction>,
|
||||
|
@ -31,52 +31,52 @@ pub(crate) struct PlaylistCont {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Contents {
|
||||
pub struct Contents {
|
||||
pub two_column_browse_results_renderer: ContentsRenderer<Tab>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Tab {
|
||||
pub struct Tab {
|
||||
pub tab_renderer: ContentRenderer<SectionList>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct SectionList {
|
||||
pub struct SectionList {
|
||||
pub section_list_renderer: ContentsRenderer<ItemSection>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ItemSection {
|
||||
pub struct ItemSection {
|
||||
pub item_section_renderer: ContentsRenderer<PlaylistVideoListRenderer>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct PlaylistVideoListRenderer {
|
||||
pub struct PlaylistVideoListRenderer {
|
||||
pub playlist_video_list_renderer: PlaylistVideoList,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct PlaylistVideoList {
|
||||
pub struct PlaylistVideoList {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
pub contents: MapResult<Vec<PlaylistItem>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Header {
|
||||
pub struct Header {
|
||||
pub playlist_header_renderer: HeaderRenderer,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct HeaderRenderer {
|
||||
pub struct HeaderRenderer {
|
||||
pub playlist_id: String,
|
||||
#[serde_as(as = "Text")]
|
||||
pub title: String,
|
||||
|
@ -95,48 +95,48 @@ pub(crate) struct HeaderRenderer {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct PlaylistHeaderBanner {
|
||||
pub struct PlaylistHeaderBanner {
|
||||
pub hero_playlist_thumbnail_renderer: ThumbnailsWrap,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Byline {
|
||||
pub struct Byline {
|
||||
pub playlist_byline_renderer: BylineRenderer,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct BylineRenderer {
|
||||
pub struct BylineRenderer {
|
||||
#[serde_as(as = "Text")]
|
||||
pub text: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Sidebar {
|
||||
pub struct Sidebar {
|
||||
pub playlist_sidebar_renderer: SidebarRenderer,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct SidebarRenderer {
|
||||
pub struct SidebarRenderer {
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub items: Vec<SidebarItemPrimary>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct SidebarItemPrimary {
|
||||
pub struct SidebarItemPrimary {
|
||||
pub playlist_sidebar_primary_info_renderer: SidebarPrimaryInfoRenderer,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct SidebarPrimaryInfoRenderer {
|
||||
pub struct SidebarPrimaryInfoRenderer {
|
||||
pub thumbnail_renderer: PlaylistThumbnailRenderer,
|
||||
/// - `"495", " videos"`
|
||||
/// - `"3,310,996 views"`
|
||||
|
@ -147,7 +147,7 @@ pub(crate) struct SidebarPrimaryInfoRenderer {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct PlaylistThumbnailRenderer {
|
||||
pub struct PlaylistThumbnailRenderer {
|
||||
// the alternative field name is used by YTM playlists
|
||||
#[serde(alias = "playlistCustomThumbnailRenderer")]
|
||||
pub playlist_video_thumbnail_renderer: ThumbnailsWrap,
|
||||
|
@ -156,7 +156,7 @@ pub(crate) struct PlaylistThumbnailRenderer {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) enum PlaylistItem {
|
||||
pub enum PlaylistItem {
|
||||
/// Video in playlist
|
||||
PlaylistVideoRenderer(PlaylistVideoRenderer),
|
||||
/// Continauation items are located at the end of a list
|
||||
|
@ -174,7 +174,7 @@ pub(crate) enum PlaylistItem {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct PlaylistVideoRenderer {
|
||||
pub struct PlaylistVideoRenderer {
|
||||
pub video_id: String,
|
||||
pub thumbnail: Thumbnails,
|
||||
#[serde_as(as = "Text")]
|
||||
|
@ -203,14 +203,14 @@ impl TryFrom<PlaylistVideoRenderer> for crate::model::PlaylistVideo {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct OnResponseReceivedAction {
|
||||
pub struct OnResponseReceivedAction {
|
||||
pub append_continuation_items_action: AppendAction,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct AppendAction {
|
||||
pub struct AppendAction {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
pub continuation_items: MapResult<Vec<PlaylistItem>>,
|
||||
}
|
||||
|
|
|
@ -11,33 +11,33 @@ use super::{
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct PlaylistMusic {
|
||||
pub struct PlaylistMusic {
|
||||
pub contents: Contents,
|
||||
pub header: Header,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Contents {
|
||||
pub struct Contents {
|
||||
pub single_column_browse_results_renderer: ContentsRenderer<Tab>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Tab {
|
||||
pub struct Tab {
|
||||
pub tab_renderer: ContentRenderer<SectionList>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct SectionList {
|
||||
pub struct SectionList {
|
||||
/// Includes a continuation token for fetching recommendations
|
||||
pub section_list_renderer: MusicContentsRenderer<ItemSection>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ItemSection {
|
||||
pub struct ItemSection {
|
||||
#[serde(alias = "musicPlaylistShelfRenderer")]
|
||||
pub music_shelf_renderer: MusicShelf,
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ pub(crate) struct ItemSection {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MusicShelf {
|
||||
pub struct MusicShelf {
|
||||
/// Playlist ID (only for playlists)
|
||||
pub playlist_id: Option<String>,
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
|
@ -57,20 +57,20 @@ pub(crate) struct MusicShelf {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct PlaylistMusicItem {
|
||||
pub struct PlaylistMusicItem {
|
||||
pub music_responsive_list_item_renderer: MusicItem,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Header {
|
||||
pub struct Header {
|
||||
pub music_detail_header_renderer: HeaderRenderer,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct HeaderRenderer {
|
||||
pub struct HeaderRenderer {
|
||||
#[serde_as(as = "crate::serializer::text::Text")]
|
||||
pub title: String,
|
||||
/// Content type + Channel/Artist + Year.
|
||||
|
|
|
@ -6,7 +6,7 @@ use super::video_item::YouTubeListRendererWrap;
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Search {
|
||||
pub struct Search {
|
||||
#[serde_as(as = "Option<JsonString>")]
|
||||
pub estimated_results: Option<u64>,
|
||||
pub contents: Contents,
|
||||
|
@ -14,12 +14,12 @@ pub(crate) struct Search {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Contents {
|
||||
pub struct Contents {
|
||||
pub two_column_search_results_renderer: TwoColumnSearchResultsRenderer,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TwoColumnSearchResultsRenderer {
|
||||
pub struct TwoColumnSearchResultsRenderer {
|
||||
pub primary_contents: YouTubeListRendererWrap,
|
||||
}
|
||||
|
|
|
@ -5,33 +5,33 @@ use super::{video_item::YouTubeListRendererWrap, ContentRenderer, ResponseContex
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Startpage {
|
||||
pub struct Startpage {
|
||||
pub contents: Contents,
|
||||
pub response_context: ResponseContext,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Trending {
|
||||
pub struct Trending {
|
||||
pub contents: Contents,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Contents {
|
||||
pub struct Contents {
|
||||
pub two_column_browse_results_renderer: BrowseResults,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct BrowseResults {
|
||||
pub struct BrowseResults {
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub tabs: Vec<Tab<YouTubeListRendererWrap>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Tab<T> {
|
||||
pub struct Tab<T> {
|
||||
pub tab_renderer: ContentRenderer<T>,
|
||||
}
|
||||
|
|
|
@ -6,14 +6,14 @@ use crate::model::UrlTarget;
|
|||
/// navigation/resolve_url response model
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ResolvedUrl {
|
||||
pub struct ResolvedUrl {
|
||||
pub endpoint: NavigationEndpoint,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize, Default)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct NavigationEndpoint {
|
||||
pub struct NavigationEndpoint {
|
||||
#[serde(default)]
|
||||
#[serde_as(deserialize_as = "DefaultOnError")]
|
||||
pub watch_endpoint: Option<WatchEndpoint>,
|
||||
|
@ -30,7 +30,7 @@ pub(crate) struct NavigationEndpoint {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct WatchEndpoint {
|
||||
pub struct WatchEndpoint {
|
||||
pub video_id: String,
|
||||
#[serde(default)]
|
||||
pub start_time_seconds: u32,
|
||||
|
@ -38,43 +38,43 @@ pub(crate) struct WatchEndpoint {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct BrowseEndpoint {
|
||||
pub struct BrowseEndpoint {
|
||||
pub browse_id: String,
|
||||
pub browse_endpoint_context_supported_configs: Option<BrowseEndpointConfig>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct UrlEndpoint {
|
||||
pub struct UrlEndpoint {
|
||||
pub url: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct BrowseEndpointConfig {
|
||||
pub struct BrowseEndpointConfig {
|
||||
pub browse_endpoint_context_music_config: BrowseEndpointMusicConfig,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct BrowseEndpointMusicConfig {
|
||||
pub struct BrowseEndpointMusicConfig {
|
||||
pub page_type: PageType,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CommandMetadata {
|
||||
pub struct CommandMetadata {
|
||||
pub web_command_metadata: WebCommandMetadata,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct WebCommandMetadata {
|
||||
pub struct WebCommandMetadata {
|
||||
pub web_page_type: PageType,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, Deserialize, PartialEq, Eq)]
|
||||
pub(crate) enum PageType {
|
||||
pub enum PageType {
|
||||
#[serde(rename = "MUSIC_PAGE_TYPE_ARTIST")]
|
||||
Artist,
|
||||
#[serde(rename = "MUSIC_PAGE_TYPE_ALBUM")]
|
||||
|
@ -89,7 +89,7 @@ pub(crate) enum PageType {
|
|||
}
|
||||
|
||||
impl PageType {
|
||||
pub(crate) fn to_url_target(self, id: String) -> UrlTarget {
|
||||
pub fn to_url_target(self, id: String) -> UrlTarget {
|
||||
match self {
|
||||
PageType::Artist => UrlTarget::Channel { id },
|
||||
PageType::Album => UrlTarget::Playlist { id },
|
||||
|
|
|
@ -4,7 +4,6 @@ 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},
|
||||
|
@ -13,9 +12,9 @@ use crate::serializer::{
|
|||
|
||||
use super::{
|
||||
url_endpoint::BrowseEndpoint, ContinuationEndpoint, ContinuationItemRenderer, Icon,
|
||||
MusicContinuation, Thumbnails,
|
||||
MusicContinuation, Thumbnails, VideoOwner,
|
||||
};
|
||||
use super::{ChannelBadge, ResponseContext, YouTubeListItem};
|
||||
use super::{ResponseContext, YouTubeListItem};
|
||||
|
||||
/*
|
||||
#VIDEO DETAILS
|
||||
|
@ -25,7 +24,7 @@ use super::{ChannelBadge, ResponseContext, YouTubeListItem};
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct VideoDetails {
|
||||
pub struct VideoDetails {
|
||||
/// Video metadata + recommended videos
|
||||
pub contents: Option<Contents>,
|
||||
/// Video ID
|
||||
|
@ -39,13 +38,13 @@ pub(crate) struct VideoDetails {
|
|||
/// Video details main object, contains video metadata and recommended videos
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Contents {
|
||||
pub struct Contents {
|
||||
pub two_column_watch_next_results: TwoColumnWatchNextResults,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TwoColumnWatchNextResults {
|
||||
pub struct TwoColumnWatchNextResults {
|
||||
/// Metadata about the video
|
||||
pub results: VideoResultsWrap,
|
||||
/// Video recommendations
|
||||
|
@ -57,7 +56,7 @@ pub(crate) struct TwoColumnWatchNextResults {
|
|||
/// Metadata about the video
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct VideoResultsWrap {
|
||||
pub struct VideoResultsWrap {
|
||||
pub results: VideoResults,
|
||||
}
|
||||
|
||||
|
@ -65,7 +64,7 @@ pub(crate) struct VideoResultsWrap {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct VideoResults {
|
||||
pub struct VideoResults {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
pub contents: MapResult<Vec<VideoResultsItem>>,
|
||||
}
|
||||
|
@ -74,7 +73,7 @@ pub(crate) struct VideoResults {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) enum VideoResultsItem {
|
||||
pub enum VideoResultsItem {
|
||||
#[serde(rename_all = "camelCase")]
|
||||
VideoPrimaryInfoRenderer {
|
||||
#[serde_as(as = "Text")]
|
||||
|
@ -108,14 +107,14 @@ pub(crate) enum VideoResultsItem {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ViewCount {
|
||||
pub struct ViewCount {
|
||||
pub video_view_count_renderer: ViewCountRenderer,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ViewCountRenderer {
|
||||
pub struct ViewCountRenderer {
|
||||
/// View count (`232,975,196 views`)
|
||||
#[serde_as(as = "Text")]
|
||||
pub view_count: String,
|
||||
|
@ -126,7 +125,7 @@ pub(crate) struct ViewCountRenderer {
|
|||
/// Like/Dislike buttons
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct VideoActions {
|
||||
pub struct VideoActions {
|
||||
pub menu_renderer: VideoActionsMenu,
|
||||
}
|
||||
|
||||
|
@ -134,7 +133,7 @@ pub(crate) struct VideoActions {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct VideoActionsMenu {
|
||||
pub struct VideoActionsMenu {
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub top_level_buttons: Vec<TopLevelButton>,
|
||||
}
|
||||
|
@ -147,7 +146,7 @@ pub(crate) struct VideoActionsMenu {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) enum TopLevelButton {
|
||||
pub enum TopLevelButton {
|
||||
ToggleButtonRenderer(ToggleButton),
|
||||
#[serde(rename_all = "camelCase")]
|
||||
SegmentedLikeDislikeButtonRenderer {
|
||||
|
@ -158,7 +157,7 @@ pub(crate) enum TopLevelButton {
|
|||
/// Like/Dislike button
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ToggleButtonWrap {
|
||||
pub struct ToggleButtonWrap {
|
||||
pub toggle_button_renderer: ToggleButton,
|
||||
}
|
||||
|
||||
|
@ -166,7 +165,7 @@ pub(crate) struct ToggleButtonWrap {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ToggleButton {
|
||||
pub struct ToggleButton {
|
||||
/// Icon type: `LIKE` / `DISLIKE`
|
||||
pub default_icon: Icon,
|
||||
/// Number of likes (`like this video along with 4,010,156 other people`)
|
||||
|
@ -176,32 +175,11 @@ 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)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MetadataRowContainer {
|
||||
pub struct MetadataRowContainer {
|
||||
pub metadata_row_container_renderer: MetadataRowContainerRenderer,
|
||||
}
|
||||
|
||||
|
@ -209,14 +187,14 @@ pub(crate) struct MetadataRowContainer {
|
|||
/// the Creative Commonse License.
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MetadataRowContainerRenderer {
|
||||
pub struct MetadataRowContainerRenderer {
|
||||
pub rows: Vec<MetadataRow>,
|
||||
}
|
||||
|
||||
/// Additional video metadata item (Creative Commons License)
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MetadataRow {
|
||||
pub struct MetadataRow {
|
||||
pub metadata_row_renderer: MetadataRowRenderer,
|
||||
}
|
||||
|
||||
|
@ -224,7 +202,7 @@ pub(crate) struct MetadataRow {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MetadataRowRenderer {
|
||||
pub struct MetadataRowRenderer {
|
||||
// `License`
|
||||
// #[serde_as(as = "Text")]
|
||||
// pub title: String,
|
||||
|
@ -239,13 +217,13 @@ pub(crate) struct MetadataRowRenderer {
|
|||
/// Contains current video ID
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CurrentVideoEndpoint {
|
||||
pub struct CurrentVideoEndpoint {
|
||||
pub watch_endpoint: CurrentVideoWatchEndpoint,
|
||||
}
|
||||
/// Contains current video ID
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CurrentVideoWatchEndpoint {
|
||||
pub struct CurrentVideoWatchEndpoint {
|
||||
pub video_id: String,
|
||||
}
|
||||
|
||||
|
@ -256,7 +234,7 @@ pub(crate) struct CurrentVideoWatchEndpoint {
|
|||
#[serde_as]
|
||||
#[derive(Default, Debug, Deserialize)]
|
||||
#[serde(rename_all = "kebab-case", tag = "sectionIdentifier")]
|
||||
pub(crate) enum ItemSection {
|
||||
pub enum ItemSection {
|
||||
CommentsEntryPoint {
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
contents: Vec<ItemSectionCommentCount>,
|
||||
|
@ -272,7 +250,7 @@ pub(crate) enum ItemSection {
|
|||
/// Item section containing comment count
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ItemSectionCommentCount {
|
||||
pub struct ItemSectionCommentCount {
|
||||
pub comments_entry_point_header_renderer: CommentsEntryPointHeaderRenderer,
|
||||
}
|
||||
|
||||
|
@ -280,7 +258,7 @@ pub(crate) struct ItemSectionCommentCount {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CommentsEntryPointHeaderRenderer {
|
||||
pub struct CommentsEntryPointHeaderRenderer {
|
||||
#[serde_as(as = "Text")]
|
||||
pub comment_count: String,
|
||||
}
|
||||
|
@ -288,14 +266,14 @@ pub(crate) struct CommentsEntryPointHeaderRenderer {
|
|||
/// Item section containing comments ctoken
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ItemSectionComments {
|
||||
pub struct ItemSectionComments {
|
||||
pub continuation_item_renderer: ContinuationItemRenderer,
|
||||
}
|
||||
|
||||
/// Video recommendations
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct RecommendationResultsWrap {
|
||||
pub struct RecommendationResultsWrap {
|
||||
pub secondary_results: RecommendationResults,
|
||||
}
|
||||
|
||||
|
@ -303,7 +281,7 @@ pub(crate) struct RecommendationResultsWrap {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct RecommendationResults {
|
||||
pub struct RecommendationResults {
|
||||
/// Can be `None` for age-restricted videos
|
||||
#[serde_as(as = "Option<VecLogError<_>>")]
|
||||
pub results: Option<MapResult<Vec<YouTubeListItem>>>,
|
||||
|
@ -315,7 +293,7 @@ pub(crate) struct RecommendationResults {
|
|||
/// and the comment section.
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct EngagementPanel {
|
||||
pub struct EngagementPanel {
|
||||
pub engagement_panel_section_list_renderer: EngagementPanelRenderer,
|
||||
}
|
||||
|
||||
|
@ -323,7 +301,7 @@ pub(crate) struct EngagementPanel {
|
|||
/// and the comment section.
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "kebab-case", tag = "targetId")]
|
||||
pub(crate) enum EngagementPanelRenderer {
|
||||
pub enum EngagementPanelRenderer {
|
||||
/// Chapter markers
|
||||
EngagementPanelMacroMarkersDescriptionChapters { content: ChapterMarkersContent },
|
||||
/// Comment section (contains no comments, but the
|
||||
|
@ -342,7 +320,7 @@ pub(crate) enum EngagementPanelRenderer {
|
|||
/// Chapter markers
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ChapterMarkersContent {
|
||||
pub struct ChapterMarkersContent {
|
||||
pub macro_markers_list_renderer: MacroMarkersListRenderer,
|
||||
}
|
||||
|
||||
|
@ -350,7 +328,7 @@ pub(crate) struct ChapterMarkersContent {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MacroMarkersListRenderer {
|
||||
pub struct MacroMarkersListRenderer {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
pub contents: MapResult<Vec<MacroMarkersListItem>>,
|
||||
}
|
||||
|
@ -358,7 +336,7 @@ pub(crate) struct MacroMarkersListRenderer {
|
|||
/// Chapter marker
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MacroMarkersListItem {
|
||||
pub struct MacroMarkersListItem {
|
||||
pub macro_markers_list_item_renderer: MacroMarkersListItemRenderer,
|
||||
}
|
||||
|
||||
|
@ -366,7 +344,7 @@ pub(crate) struct MacroMarkersListItem {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MacroMarkersListItemRenderer {
|
||||
pub struct MacroMarkersListItemRenderer {
|
||||
/// Contains chapter start time in seconds
|
||||
pub on_tap: MacroMarkersListItemOnTap,
|
||||
#[serde(default)]
|
||||
|
@ -379,13 +357,13 @@ pub(crate) struct MacroMarkersListItemRenderer {
|
|||
/// Contains chapter start time in seconds
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MacroMarkersListItemOnTap {
|
||||
pub struct MacroMarkersListItemOnTap {
|
||||
pub watch_endpoint: MacroMarkersListItemWatchEndpoint,
|
||||
}
|
||||
/// Contains chapter start time in seconds
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MacroMarkersListItemWatchEndpoint {
|
||||
pub struct MacroMarkersListItemWatchEndpoint {
|
||||
/// Chapter start time in seconds
|
||||
pub start_time_seconds: u32,
|
||||
}
|
||||
|
@ -394,7 +372,7 @@ pub(crate) struct MacroMarkersListItemWatchEndpoint {
|
|||
/// (contains continuation tokens for fetching top/latest comments)
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CommentItemSectionHeader {
|
||||
pub struct CommentItemSectionHeader {
|
||||
pub engagement_panel_title_header_renderer: CommentItemSectionHeaderRenderer,
|
||||
}
|
||||
|
||||
|
@ -403,14 +381,21 @@ pub(crate) struct CommentItemSectionHeader {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CommentItemSectionHeaderRenderer {
|
||||
pub 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,
|
||||
}
|
||||
|
||||
/// Comment section menu
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CommentItemSectionHeaderMenu {
|
||||
pub struct CommentItemSectionHeaderMenu {
|
||||
pub sort_filter_sub_menu_renderer: CommentItemSectionHeaderMenuRenderer,
|
||||
}
|
||||
|
||||
|
@ -421,14 +406,14 @@ pub(crate) struct CommentItemSectionHeaderMenu {
|
|||
/// - Latest comments
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CommentItemSectionHeaderMenuRenderer {
|
||||
pub struct CommentItemSectionHeaderMenuRenderer {
|
||||
pub sub_menu_items: Vec<CommentItemSectionHeaderMenuItem>,
|
||||
}
|
||||
|
||||
/// Comment section menu item
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CommentItemSectionHeaderMenuItem {
|
||||
pub struct CommentItemSectionHeaderMenuItem {
|
||||
/// Continuation token for fetching comments
|
||||
pub service_endpoint: ContinuationEndpoint,
|
||||
}
|
||||
|
@ -441,7 +426,7 @@ pub(crate) struct CommentItemSectionHeaderMenuItem {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct VideoComments {
|
||||
pub struct VideoComments {
|
||||
/// - Initial response: 2*reloadContinuationItemsCommand
|
||||
/// - 1*commentsHeaderRenderer: number of comments
|
||||
/// - n*commentThreadRenderer, continuationItemRenderer:
|
||||
|
@ -459,7 +444,7 @@ pub(crate) struct VideoComments {
|
|||
/// Video comments continuation
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CommentsContItem {
|
||||
pub struct CommentsContItem {
|
||||
#[serde(alias = "reloadContinuationItemsCommand")]
|
||||
pub append_continuation_items_action: AppendComments,
|
||||
}
|
||||
|
@ -468,7 +453,7 @@ pub(crate) struct CommentsContItem {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct AppendComments {
|
||||
pub struct AppendComments {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
pub continuation_items: MapResult<Vec<CommentListItem>>,
|
||||
}
|
||||
|
@ -476,7 +461,7 @@ pub(crate) struct AppendComments {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) enum CommentListItem {
|
||||
pub enum CommentListItem {
|
||||
/// Top-level comment
|
||||
#[serde(rename_all = "camelCase")]
|
||||
CommentThreadRenderer {
|
||||
|
@ -506,14 +491,14 @@ pub(crate) enum CommentListItem {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Comment {
|
||||
pub struct Comment {
|
||||
pub comment_renderer: CommentRenderer,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CommentRenderer {
|
||||
pub struct CommentRenderer {
|
||||
/// Author name
|
||||
///
|
||||
/// There may be comments with missing authors (possibly deleted users?)
|
||||
|
@ -544,13 +529,13 @@ pub(crate) struct CommentRenderer {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct AuthorEndpoint {
|
||||
pub struct AuthorEndpoint {
|
||||
pub browse_endpoint: BrowseEndpoint,
|
||||
}
|
||||
|
||||
#[derive(Default, Clone, Copy, Debug, Deserialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||
pub(crate) enum CommentPriority {
|
||||
pub enum CommentPriority {
|
||||
/// Default rendering priority
|
||||
#[default]
|
||||
RenderingPriorityUnknown,
|
||||
|
@ -562,7 +547,7 @@ pub(crate) enum CommentPriority {
|
|||
/// for fetching them.
|
||||
#[derive(Default, Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Replies {
|
||||
pub struct Replies {
|
||||
pub comment_replies_renderer: RepliesRenderer,
|
||||
}
|
||||
|
||||
|
@ -571,7 +556,7 @@ pub(crate) struct Replies {
|
|||
#[serde_as]
|
||||
#[derive(Default, Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct RepliesRenderer {
|
||||
pub struct RepliesRenderer {
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub contents: Vec<CommentListItem>,
|
||||
}
|
||||
|
@ -580,7 +565,7 @@ pub(crate) struct RepliesRenderer {
|
|||
/// Contains the CreatorHeart.
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CommentActionButtons {
|
||||
pub struct CommentActionButtons {
|
||||
pub comment_action_buttons_renderer: CommentActionButtonsRenderer,
|
||||
}
|
||||
|
||||
|
@ -588,7 +573,7 @@ pub(crate) struct CommentActionButtons {
|
|||
/// Contains the CreatorHeart.
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CommentActionButtonsRenderer {
|
||||
pub struct CommentActionButtonsRenderer {
|
||||
pub like_button: ToggleButtonWrap,
|
||||
pub creator_heart: Option<CreatorHeart>,
|
||||
}
|
||||
|
@ -596,27 +581,27 @@ pub(crate) struct CommentActionButtonsRenderer {
|
|||
/// Video creators can endorse comments by marking them with a ❤️.
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CreatorHeart {
|
||||
pub struct CreatorHeart {
|
||||
pub creator_heart_renderer: CreatorHeartRenderer,
|
||||
}
|
||||
|
||||
/// Video creators can endorse comments by marking them with a ❤️.
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct CreatorHeartRenderer {
|
||||
pub struct CreatorHeartRenderer {
|
||||
pub is_hearted: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct AuthorCommentBadge {
|
||||
pub struct AuthorCommentBadge {
|
||||
pub author_comment_badge_renderer: AuthorCommentBadgeRenderer,
|
||||
}
|
||||
|
||||
/// YouTube channel badge (verified) of the comment author
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct AuthorCommentBadgeRenderer {
|
||||
pub struct AuthorCommentBadgeRenderer {
|
||||
/// Verified: `CHECK`
|
||||
///
|
||||
/// Artist: `OFFICIAL_ARTIST_BADGE`
|
||||
|
|
|
@ -18,7 +18,7 @@ use crate::{
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) enum YouTubeListItem {
|
||||
pub enum YouTubeListItem {
|
||||
#[serde(alias = "gridVideoRenderer", alias = "compactVideoRenderer")]
|
||||
VideoRenderer(VideoRenderer),
|
||||
|
||||
|
@ -73,7 +73,7 @@ pub(crate) enum YouTubeListItem {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct VideoRenderer {
|
||||
pub struct VideoRenderer {
|
||||
pub video_id: String,
|
||||
pub thumbnail: Thumbnails,
|
||||
#[serde_as(as = "Text")]
|
||||
|
@ -114,7 +114,7 @@ pub(crate) struct VideoRenderer {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct PlaylistRenderer {
|
||||
pub struct PlaylistRenderer {
|
||||
pub playlist_id: String,
|
||||
#[serde_as(as = "Text")]
|
||||
pub title: String,
|
||||
|
@ -140,7 +140,7 @@ pub(crate) struct PlaylistRenderer {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ChannelRenderer {
|
||||
pub struct ChannelRenderer {
|
||||
pub channel_id: String,
|
||||
#[serde_as(as = "Text")]
|
||||
pub title: String,
|
||||
|
@ -164,7 +164,7 @@ pub(crate) struct ChannelRenderer {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct YouTubeListRendererWrap {
|
||||
pub struct YouTubeListRendererWrap {
|
||||
#[serde(alias = "richGridRenderer")]
|
||||
pub section_list_renderer: YouTubeListRenderer,
|
||||
}
|
||||
|
@ -172,7 +172,7 @@ pub(crate) struct YouTubeListRendererWrap {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct YouTubeListRenderer {
|
||||
pub struct YouTubeListRenderer {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
pub contents: MapResult<Vec<YouTubeListItem>>,
|
||||
}
|
||||
|
@ -180,7 +180,7 @@ pub(crate) struct YouTubeListRenderer {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct UpcomingEventData {
|
||||
pub struct UpcomingEventData {
|
||||
/// Unixtime in seconds
|
||||
#[serde_as(as = "JsonString")]
|
||||
pub start_time: i64,
|
||||
|
@ -188,7 +188,7 @@ pub(crate) struct UpcomingEventData {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TimeOverlay {
|
||||
pub struct TimeOverlay {
|
||||
pub thumbnail_overlay_time_status_renderer: TimeOverlayRenderer,
|
||||
}
|
||||
|
||||
|
@ -196,7 +196,7 @@ pub(crate) struct TimeOverlay {
|
|||
/// show certain video properties (e.g. active livestream)
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct VideoBadge {
|
||||
pub struct VideoBadge {
|
||||
pub metadata_badge_renderer: VideoBadgeRenderer,
|
||||
}
|
||||
|
||||
|
@ -204,13 +204,13 @@ pub(crate) struct VideoBadge {
|
|||
/// show certain video properties (e.g. active livestream)
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct VideoBadgeRenderer {
|
||||
pub struct VideoBadgeRenderer {
|
||||
pub style: VideoBadgeStyle,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, Hash)]
|
||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||
pub(crate) enum VideoBadgeStyle {
|
||||
pub enum VideoBadgeStyle {
|
||||
/// Active livestream
|
||||
BadgeStyleTypeLiveNow,
|
||||
}
|
||||
|
@ -218,7 +218,7 @@ pub(crate) enum VideoBadgeStyle {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TimeOverlayRenderer {
|
||||
pub struct TimeOverlayRenderer {
|
||||
/// `29:54`
|
||||
///
|
||||
/// Is `LIVE` in case of a livestream and `SHORTS` in case of a short video
|
||||
|
@ -231,7 +231,7 @@ pub(crate) struct TimeOverlayRenderer {
|
|||
|
||||
#[derive(Default, Clone, Copy, Debug, Deserialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||
pub(crate) enum TimeOverlayStyle {
|
||||
pub enum TimeOverlayStyle {
|
||||
#[default]
|
||||
Default,
|
||||
Live,
|
||||
|
@ -241,20 +241,20 @@ pub(crate) enum TimeOverlayStyle {
|
|||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct DetailedMetadataSnippet {
|
||||
pub struct DetailedMetadataSnippet {
|
||||
#[serde_as(as = "Text")]
|
||||
pub snippet_text: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ChannelThumbnailSupportedRenderers {
|
||||
pub struct ChannelThumbnailSupportedRenderers {
|
||||
pub channel_thumbnail_with_link_renderer: ChannelThumbnailWithLinkRenderer,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ChannelThumbnailWithLinkRenderer {
|
||||
pub struct ChannelThumbnailWithLinkRenderer {
|
||||
pub thumbnail: Thumbnails,
|
||||
}
|
||||
|
||||
|
@ -293,7 +293,7 @@ impl IsShort for Vec<TimeOverlay> {
|
|||
/// Result of mapping a list of different YouTube enities
|
||||
/// (videos, channels, playlists)
|
||||
#[derive(Debug)]
|
||||
pub(crate) struct YouTubeListMapper<T> {
|
||||
pub struct YouTubeListMapper<T> {
|
||||
lang: Language,
|
||||
pub items: Vec<T>,
|
||||
pub warnings: Vec<String>,
|
||||
|
@ -442,7 +442,7 @@ impl YouTubeListMapper<YouTubeItem> {
|
|||
}
|
||||
}
|
||||
|
||||
pub(crate) fn map_response(&mut self, mut res: MapResult<Vec<YouTubeListItem>>) {
|
||||
pub fn map_response(&mut self, mut res: MapResult<Vec<YouTubeListItem>>) {
|
||||
self.warnings.append(&mut res.warnings);
|
||||
res.c.into_iter().for_each(|item| self.map_item(item));
|
||||
}
|
||||
|
@ -471,7 +471,7 @@ impl YouTubeListMapper<VideoItem> {
|
|||
}
|
||||
}
|
||||
|
||||
pub(crate) fn map_response(&mut self, mut res: MapResult<Vec<YouTubeListItem>>) {
|
||||
pub fn map_response(&mut self, mut res: MapResult<Vec<YouTubeListItem>>) {
|
||||
self.warnings.append(&mut res.warnings);
|
||||
res.c.into_iter().for_each(|item| self.map_item(item));
|
||||
}
|
||||
|
@ -500,7 +500,7 @@ impl YouTubeListMapper<PlaylistItem> {
|
|||
}
|
||||
}
|
||||
|
||||
pub(crate) fn map_response(&mut self, mut res: MapResult<Vec<YouTubeListItem>>) {
|
||||
pub fn map_response(&mut self, mut res: MapResult<Vec<YouTubeListItem>>) {
|
||||
self.warnings.append(&mut res.warnings);
|
||||
res.c.into_iter().for_each(|item| self.map_item(item));
|
||||
}
|
||||
|
|
|
@ -23,7 +23,6 @@ Channel(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
description: "NO SCRIPT, NO FEAR, ALL OPINION\nAn off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers\nHosted by Dave Jones from Sydney Australia\n\nDONATIONS:\nBitcoin: 3KqyH1U3qrMPnkLufM2oHDU7YB4zVZeFyZ\nEthereum: 0x99ccc4d2654ba40744a1f678d9868ecb15e91206\nPayPal: david@alternatezone.com\n\nPatreon: https://www.patreon.com/eevblog\n\nEEVblog2: http://www.youtube.com/EEVblog2\nEEVdiscover: https://www.youtube.com/channel/UCkGvUEt8iQLmq3aJIMjT2qQ\n\nEMAIL:\nAdvertising/Commercial: eevblog+business@gmail.com\nFan mail: eevblog+fan@gmail.com\nHate Mail: eevblog+hate@gmail.com\n\nI DON\'T DO PAID VIDEO SPONSORSHIPS, DON\'T ASK!\n\nPLEASE:\nDo NOT ask for personal advice on something, post it in the EEVblog forum.\nI read ALL email, but please don\'t be offended if I don\'t have time to reply, I get a LOT of email.\n\nMailbag\nPO Box 7949\nBaulkham Hills NSW 2153\nAUSTRALIA",
|
||||
tags: [
|
||||
"electronics",
|
||||
|
|
|
@ -23,7 +23,6 @@ Channel(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
description: "NO SCRIPT, NO FEAR, ALL OPINION\nAn off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers\nHosted by Dave Jones from Sydney Australia\n\nDONATIONS:\nBitcoin: 3KqyH1U3qrMPnkLufM2oHDU7YB4zVZeFyZ\nEthereum: 0x99ccc4d2654ba40744a1f678d9868ecb15e91206\nPayPal: david@alternatezone.com\n\nPatreon: https://www.patreon.com/eevblog\n\nEEVblog2: http://www.youtube.com/EEVblog2\nEEVdiscover: https://www.youtube.com/channel/UCkGvUEt8iQLmq3aJIMjT2qQ\n\nEMAIL:\nAdvertising/Commercial: eevblog+business@gmail.com\nFan mail: eevblog+fan@gmail.com\nHate Mail: eevblog+hate@gmail.com\n\nI DON\'T DO PAID VIDEO SPONSORSHIPS, DON\'T ASK!\n\nPLEASE:\nDo NOT ask for personal advice on something, post it in the EEVblog forum.\nI read ALL email, but please don\'t be offended if I don\'t have time to reply, I get a LOT of email.\n\nMailbag\nPO Box 7949\nBaulkham Hills NSW 2153\nAUSTRALIA",
|
||||
tags: [
|
||||
"electronics",
|
||||
|
|
|
@ -23,7 +23,6 @@ Channel(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
description: "Hi, I’m Tina, aka Doobydobap!\n\nFood is the medium I use to tell stories and connect with people who share the same passion as I do. Whether it’s because you’re hungry at midnight or trying to learn how to cook, I hope you enjoy watching my content and recipes. Don\'t yuck my yum!\n\nwww.doobydobap.com\n",
|
||||
tags: [],
|
||||
vanity_url: Some("https://www.youtube.com/c/Doobydobap"),
|
||||
|
|
|
@ -23,7 +23,6 @@ Channel(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
description: "NO SCRIPT, NO FEAR, ALL OPINION\nAn off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers\nHosted by Dave Jones from Sydney Australia\n\nDONATIONS:\nBitcoin: 3KqyH1U3qrMPnkLufM2oHDU7YB4zVZeFyZ\nEthereum: 0x99ccc4d2654ba40744a1f678d9868ecb15e91206\nPayPal: david@alternatezone.com\n\nPatreon: https://www.patreon.com/eevblog\n\nEEVblog2: http://www.youtube.com/EEVblog2\nEEVdiscover: https://www.youtube.com/channel/UCkGvUEt8iQLmq3aJIMjT2qQ\n\nEMAIL:\nAdvertising/Commercial: eevblog+business@gmail.com\nFan mail: eevblog+fan@gmail.com\nHate Mail: eevblog+hate@gmail.com\n\nI DON\'T DO PAID VIDEO SPONSORSHIPS, DON\'T ASK!\n\nPLEASE:\nDo NOT ask for personal advice on something, post it in the EEVblog forum.\nI read ALL email, but please don\'t be offended if I don\'t have time to reply, I get a LOT of email.\n\nMailbag\nPO Box 7949\nBaulkham Hills NSW 2153\nAUSTRALIA",
|
||||
tags: [
|
||||
"electronics",
|
||||
|
|
|
@ -23,7 +23,6 @@ Channel(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
description: "NO SCRIPT, NO FEAR, ALL OPINION\nAn off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers\nHosted by Dave Jones from Sydney Australia\n\nDONATIONS:\nBitcoin: 3KqyH1U3qrMPnkLufM2oHDU7YB4zVZeFyZ\nEthereum: 0x99ccc4d2654ba40744a1f678d9868ecb15e91206\nPayPal: david@alternatezone.com\n\nPatreon: https://www.patreon.com/eevblog\n\nEEVblog2: http://www.youtube.com/EEVblog2\nEEVdiscover: https://www.youtube.com/channel/UCkGvUEt8iQLmq3aJIMjT2qQ\n\nEMAIL:\nAdvertising/Commercial: eevblog+business@gmail.com\nFan mail: eevblog+fan@gmail.com\nHate Mail: eevblog+hate@gmail.com\n\nI DON\'T DO PAID VIDEO SPONSORSHIPS, DON\'T ASK!\n\nPLEASE:\nDo NOT ask for personal advice on something, post it in the EEVblog forum.\nI read ALL email, but please don\'t be offended if I don\'t have time to reply, I get a LOT of email.\n\nMailbag\nPO Box 7949\nBaulkham Hills NSW 2153\nAUSTRALIA",
|
||||
tags: [
|
||||
"electronics",
|
||||
|
|
|
@ -23,7 +23,6 @@ Channel(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
description: "",
|
||||
tags: [],
|
||||
vanity_url: None,
|
||||
|
|
|
@ -23,7 +23,6 @@ Channel(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
description: "Welcome to The Good Life by Sensual Musique.\nThe second official channel of Sensual Musique. You can find a lot of music, live streams and some other things on this channel. Stay tuned :)\n\nSubmit your music here: submit.sensualmusiquenetwork@gmail.com",
|
||||
tags: [
|
||||
"live radio",
|
||||
|
|
|
@ -23,7 +23,6 @@ Channel(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
description: "",
|
||||
tags: [],
|
||||
vanity_url: None,
|
||||
|
|
|
@ -23,7 +23,6 @@ Channel(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
description: "Hi, I’m Tina, aka Doobydobap!\n\nFood is the medium I use to tell stories and connect with people who share the same passion as I do. Whether it’s because you’re hungry at midnight or trying to learn how to cook, I hope you enjoy watching my content and recipes. Don\'t yuck my yum!\n\nwww.doobydobap.com\n",
|
||||
tags: [],
|
||||
vanity_url: Some("https://www.youtube.com/c/Doobydobap"),
|
||||
|
|
|
@ -23,7 +23,6 @@ Channel(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
description: "BRAND NEW SECOND CHANNEL: https://youtube.com/channel/UCcsQYra-bISsFxNqnd6Javw\n\nJoin my Discord: https://discord.gg/2YcarWsc8S\n",
|
||||
tags: [
|
||||
"politics",
|
||||
|
|
|
@ -31,7 +31,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -68,7 +68,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -105,7 +105,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -142,7 +142,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -179,7 +179,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -216,7 +216,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -253,7 +253,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -290,7 +290,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -327,7 +327,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -364,7 +364,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -401,7 +401,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -438,7 +438,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -475,7 +475,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -512,7 +512,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -549,7 +549,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -586,7 +586,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -623,7 +623,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -660,7 +660,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -697,7 +697,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -26,7 +26,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -58,7 +58,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -95,7 +95,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -127,7 +127,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -164,7 +164,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -201,7 +201,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -238,7 +238,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -270,7 +270,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -302,7 +302,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -334,7 +334,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -366,7 +366,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -403,7 +403,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -435,7 +435,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -467,7 +467,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -504,7 +504,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -536,7 +536,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -26,7 +26,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -58,7 +58,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -90,7 +90,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -127,7 +127,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -164,7 +164,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -201,7 +201,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -238,7 +238,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -275,7 +275,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -312,7 +312,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -349,7 +349,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -386,7 +386,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -423,7 +423,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -460,7 +460,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -497,7 +497,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -534,7 +534,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -571,7 +571,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -608,7 +608,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -645,7 +645,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -682,7 +682,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -719,7 +719,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -756,7 +756,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -793,7 +793,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -830,7 +830,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -867,7 +867,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -21,7 +21,7 @@ SearchResult(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: Some(292),
|
||||
video_count: 219,
|
||||
short_description: "Hi, I\'m Tina, aka Doobydobap! Food is the medium I use to tell stories and connect with people who share the same passion as I\u{a0}...",
|
||||
|
@ -52,7 +52,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -89,7 +89,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -126,7 +126,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -163,7 +163,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -200,7 +200,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -237,7 +237,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -274,7 +274,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -311,7 +311,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -348,7 +348,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -385,7 +385,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -422,7 +422,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -459,7 +459,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -496,7 +496,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -533,7 +533,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -570,7 +570,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -607,7 +607,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -644,7 +644,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -681,7 +681,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -718,7 +718,7 @@ SearchResult(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -35,7 +35,7 @@ SearchResult(
|
|||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(225),
|
||||
|
@ -69,7 +69,7 @@ SearchResult(
|
|||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(100),
|
||||
|
@ -103,7 +103,7 @@ SearchResult(
|
|||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(59),
|
||||
|
@ -137,7 +137,7 @@ SearchResult(
|
|||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(100),
|
||||
|
@ -171,7 +171,7 @@ SearchResult(
|
|||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(50),
|
||||
|
@ -205,7 +205,7 @@ SearchResult(
|
|||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(50),
|
||||
|
@ -239,7 +239,7 @@ SearchResult(
|
|||
id: "UCX9oPuvJYZsG8wnHTwOBVPA",
|
||||
name: "Chillax",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(220),
|
||||
|
@ -273,7 +273,7 @@ SearchResult(
|
|||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(100),
|
||||
|
@ -307,7 +307,7 @@ SearchResult(
|
|||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(67),
|
||||
|
@ -341,7 +341,7 @@ SearchResult(
|
|||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(78),
|
||||
|
@ -375,7 +375,7 @@ SearchResult(
|
|||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(80),
|
||||
|
@ -409,7 +409,7 @@ SearchResult(
|
|||
id: "UC8Ojfs-1VLiAO_MosLwvjpQ",
|
||||
name: "Redlist - Ultimate Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(70),
|
||||
|
@ -443,7 +443,7 @@ SearchResult(
|
|||
id: "UCesP91XKnuZVd6OJN06hokg",
|
||||
name: "Startup Records",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(164),
|
||||
|
@ -477,7 +477,7 @@ SearchResult(
|
|||
id: "UCs72iRpTEuwV3y6pdWYLgiw",
|
||||
name: "Redlist - Just Hits",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(200),
|
||||
|
@ -511,7 +511,7 @@ SearchResult(
|
|||
id: "UCv9O2E_G8U46Paz8828THJw",
|
||||
name: "Victor Vaz",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(50),
|
||||
|
@ -545,7 +545,7 @@ SearchResult(
|
|||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(52),
|
||||
|
@ -579,7 +579,7 @@ SearchResult(
|
|||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(178),
|
||||
|
@ -613,7 +613,7 @@ SearchResult(
|
|||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(87),
|
||||
|
@ -647,7 +647,7 @@ SearchResult(
|
|||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(50),
|
||||
|
@ -681,7 +681,7 @@ SearchResult(
|
|||
id: "UCX9oPuvJYZsG8wnHTwOBVPA",
|
||||
name: "Chillax",
|
||||
avatar: [],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(100),
|
||||
|
|
|
@ -31,7 +31,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -68,7 +68,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -105,7 +105,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -142,7 +142,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -174,7 +174,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -211,7 +211,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -248,7 +248,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -285,7 +285,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -322,7 +322,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -359,7 +359,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -396,7 +396,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -433,7 +433,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -470,7 +470,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -507,7 +507,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -544,7 +544,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -581,7 +581,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -618,7 +618,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -655,7 +655,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -692,7 +692,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -729,7 +729,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -766,7 +766,7 @@ Paginator(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -34,7 +34,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -76,7 +76,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -118,7 +118,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -160,7 +160,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -202,7 +202,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -244,7 +244,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -286,7 +286,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -328,7 +328,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -370,7 +370,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -412,7 +412,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -454,7 +454,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -496,7 +496,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -538,7 +538,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -580,7 +580,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -622,7 +622,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -664,7 +664,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -706,7 +706,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -748,7 +748,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -790,7 +790,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -832,7 +832,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -874,7 +874,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -916,7 +916,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -958,7 +958,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1000,7 +1000,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1042,7 +1042,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1084,7 +1084,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1126,7 +1126,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1168,7 +1168,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1210,7 +1210,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1252,7 +1252,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1294,7 +1294,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1336,7 +1336,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1378,7 +1378,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1420,7 +1420,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1462,7 +1462,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1504,7 +1504,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1546,7 +1546,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1588,7 +1588,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1630,7 +1630,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1672,7 +1672,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1714,7 +1714,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1756,7 +1756,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1798,7 +1798,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1840,7 +1840,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1882,7 +1882,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1924,7 +1924,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1966,7 +1966,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2008,7 +2008,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2050,7 +2050,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2092,7 +2092,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2134,7 +2134,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2176,7 +2176,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2218,7 +2218,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2260,7 +2260,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2302,7 +2302,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2344,7 +2344,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2386,7 +2386,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2428,7 +2428,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2470,7 +2470,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2512,7 +2512,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2554,7 +2554,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2596,7 +2596,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2638,7 +2638,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2680,7 +2680,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2722,7 +2722,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2764,7 +2764,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2806,7 +2806,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2848,7 +2848,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2890,7 +2890,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2932,7 +2932,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -2974,7 +2974,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3016,7 +3016,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3058,7 +3058,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3100,7 +3100,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3142,7 +3142,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3184,7 +3184,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3226,7 +3226,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3268,7 +3268,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3310,7 +3310,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3352,7 +3352,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3394,7 +3394,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3436,7 +3436,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3478,7 +3478,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3520,7 +3520,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3562,7 +3562,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3604,7 +3604,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3646,7 +3646,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3688,7 +3688,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3730,7 +3730,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3772,7 +3772,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3814,7 +3814,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3856,7 +3856,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3898,7 +3898,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3940,7 +3940,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -3982,7 +3982,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -4024,7 +4024,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -4066,7 +4066,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -4108,7 +4108,7 @@ expression: map_res.c
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -34,7 +34,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -76,7 +76,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -119,7 +119,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -165,7 +165,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -207,7 +207,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -249,7 +249,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -291,7 +291,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -333,7 +333,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -375,7 +375,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -417,7 +417,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -459,7 +459,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -501,7 +501,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -543,7 +543,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -585,7 +585,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -627,7 +627,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -669,7 +669,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -711,7 +711,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -753,7 +753,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -33,7 +33,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -75,7 +75,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -117,7 +117,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -159,7 +159,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -201,7 +201,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -248,7 +248,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -296,7 +296,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -338,7 +338,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -380,7 +380,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -422,7 +422,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -466,7 +466,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -508,7 +508,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -550,7 +550,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -592,7 +592,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -634,7 +634,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -676,7 +676,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -718,7 +718,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -760,7 +760,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -802,7 +802,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -846,7 +846,7 @@ Paginator(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -91,7 +91,7 @@ VideoDetails(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: Some(30900000),
|
||||
),
|
||||
view_count: 233243423,
|
||||
|
@ -130,7 +130,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -167,7 +167,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -204,7 +204,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -241,7 +241,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -278,7 +278,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -315,7 +315,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -352,7 +352,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -389,7 +389,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -426,7 +426,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -463,7 +463,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -500,7 +500,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -537,7 +537,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -574,7 +574,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -611,7 +611,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -648,7 +648,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -685,7 +685,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -722,7 +722,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -91,7 +91,7 @@ VideoDetails(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: Some(31000000),
|
||||
),
|
||||
view_count: 234258725,
|
||||
|
@ -130,7 +130,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -167,7 +167,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -204,7 +204,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -241,7 +241,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -278,7 +278,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -315,7 +315,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -352,7 +352,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -389,7 +389,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -426,7 +426,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -463,7 +463,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -500,7 +500,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -537,7 +537,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -574,7 +574,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -611,7 +611,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -648,7 +648,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -685,7 +685,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -722,7 +722,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -759,7 +759,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -796,7 +796,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -287,7 +287,7 @@ VideoDetails(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: Some(14900000),
|
||||
),
|
||||
view_count: 1251797,
|
||||
|
@ -551,7 +551,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -588,7 +588,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -625,7 +625,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -662,7 +662,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -699,7 +699,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -736,7 +736,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -773,7 +773,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -810,7 +810,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -847,7 +847,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -884,7 +884,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -921,7 +921,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -958,7 +958,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -995,7 +995,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1032,7 +1032,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1069,7 +1069,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1106,7 +1106,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1143,7 +1143,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1180,7 +1180,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1217,7 +1217,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1254,7 +1254,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -26,7 +26,7 @@ VideoDetails(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: Some(1480),
|
||||
),
|
||||
view_count: 205,
|
||||
|
|
|
@ -38,7 +38,7 @@ VideoDetails(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: Some(172000),
|
||||
),
|
||||
view_count: 2493983,
|
||||
|
@ -77,7 +77,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -114,7 +114,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -151,7 +151,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -188,7 +188,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -225,7 +225,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -262,7 +262,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -299,7 +299,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -336,7 +336,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -373,7 +373,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -410,7 +410,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -447,7 +447,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -484,7 +484,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -521,7 +521,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -558,7 +558,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -595,7 +595,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -632,7 +632,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -669,7 +669,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -706,7 +706,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -743,7 +743,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -281,7 +281,7 @@ VideoDetails(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: Some(14800000),
|
||||
),
|
||||
view_count: 971966,
|
||||
|
@ -545,7 +545,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -582,7 +582,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -619,7 +619,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -656,7 +656,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -693,7 +693,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -730,7 +730,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -767,7 +767,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -804,7 +804,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -841,7 +841,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -878,7 +878,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -915,7 +915,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -952,7 +952,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -989,7 +989,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1026,7 +1026,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1063,7 +1063,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1100,7 +1100,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1137,7 +1137,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1174,7 +1174,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -1211,7 +1211,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -60,7 +60,7 @@ VideoDetails(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: Some(5590000),
|
||||
),
|
||||
view_count: 681,
|
||||
|
@ -99,7 +99,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -136,7 +136,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -173,7 +173,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -210,7 +210,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -247,7 +247,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -284,7 +284,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -321,7 +321,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -358,7 +358,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -395,7 +395,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -432,7 +432,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -469,7 +469,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -506,7 +506,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -543,7 +543,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -580,7 +580,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -617,7 +617,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -654,7 +654,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -691,7 +691,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -728,7 +728,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -765,7 +765,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -802,7 +802,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -28,7 +28,7 @@ VideoDetails(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: Some(33900),
|
||||
),
|
||||
view_count: 20304,
|
||||
|
@ -67,7 +67,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -104,7 +104,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -141,7 +141,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -178,7 +178,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -215,7 +215,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -252,7 +252,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -289,7 +289,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -326,7 +326,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -363,7 +363,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -400,7 +400,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -437,7 +437,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -474,7 +474,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -511,7 +511,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -548,7 +548,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -91,7 +91,7 @@ VideoDetails(
|
|||
height: 176,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: Some(30900000),
|
||||
),
|
||||
view_count: 232792465,
|
||||
|
@ -130,7 +130,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -167,7 +167,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -204,7 +204,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -241,7 +241,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -278,7 +278,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -315,7 +315,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -352,7 +352,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -389,7 +389,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -426,7 +426,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -463,7 +463,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -500,7 +500,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -537,7 +537,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -574,7 +574,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -611,7 +611,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -648,7 +648,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -685,7 +685,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Verified,
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -722,7 +722,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: None,
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
@ -759,7 +759,7 @@ VideoDetails(
|
|||
height: 68,
|
||||
),
|
||||
],
|
||||
verification: Artist,
|
||||
verification: artist,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
|
|
|
@ -582,6 +582,7 @@ pub struct ChannelTag {
|
|||
|
||||
/// Verification status of a channel
|
||||
#[derive(Default, Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
#[non_exhaustive]
|
||||
pub enum Verification {
|
||||
#[default]
|
||||
|
@ -655,8 +656,6 @@ pub struct Channel<T> {
|
|||
pub subscriber_count: Option<u64>,
|
||||
/// Channel avatar / profile picture
|
||||
pub avatar: Vec<Thumbnail>,
|
||||
/// Channel verification mark
|
||||
pub verification: Verification,
|
||||
/// Channel description text
|
||||
pub description: String,
|
||||
/// List of words to describe the topic of the channel
|
||||
|
|
|
@ -42,7 +42,7 @@ use crate::{
|
|||
#[serde_as]
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
#[serde(untagged)]
|
||||
pub(crate) enum Text {
|
||||
pub enum Text {
|
||||
Simple {
|
||||
#[serde(alias = "simpleText")]
|
||||
text: String,
|
||||
|
@ -86,10 +86,10 @@ impl<'de> DeserializeAs<'de, Vec<String>> for Text {
|
|||
///
|
||||
/// Texts with links are mapped as a list of text components.
|
||||
#[derive(Default, Debug, Clone)]
|
||||
pub(crate) struct TextComponents(pub Vec<TextComponent>);
|
||||
pub struct TextComponents(pub Vec<TextComponent>);
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub(crate) enum TextComponent {
|
||||
pub enum TextComponent {
|
||||
Video {
|
||||
text: String,
|
||||
video_id: String,
|
||||
|
@ -130,7 +130,7 @@ struct RichTextRun {
|
|||
/// the links.
|
||||
#[derive(Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct AttributedText {
|
||||
pub struct AttributedText {
|
||||
content: String,
|
||||
#[serde(default)]
|
||||
command_runs: Vec<AttributedTextRun>,
|
||||
|
@ -345,7 +345,7 @@ impl From<TextComponents> for crate::model::richtext::RichText {
|
|||
|
||||
#[derive(Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct AccessibilityText {
|
||||
pub struct AccessibilityText {
|
||||
accessibility_data: AccessibilityData,
|
||||
}
|
||||
|
||||
|
|
|
@ -984,7 +984,6 @@ fn assert_channel_eevblog<T>(channel: &Channel<T>) {
|
|||
channel.subscriber_count.unwrap()
|
||||
);
|
||||
assert!(!channel.avatar.is_empty(), "got no thumbnails");
|
||||
assert_eq!(channel.verification, Verification::Verified);
|
||||
assert_eq!(channel.description, "NO SCRIPT, NO FEAR, ALL OPINION\nAn off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers\nHosted by Dave Jones from Sydney Australia\n\nDONATIONS:\nBitcoin: 3KqyH1U3qrMPnkLufM2oHDU7YB4zVZeFyZ\nEthereum: 0x99ccc4d2654ba40744a1f678d9868ecb15e91206\nPayPal: david@alternatezone.com\n\nPatreon: https://www.patreon.com/eevblog\n\nEEVblog2: http://www.youtube.com/EEVblog2\nEEVdiscover: https://www.youtube.com/channel/UCkGvUEt8iQLmq3aJIMjT2qQ\n\nEMAIL:\nAdvertising/Commercial: eevblog+business@gmail.com\nFan mail: eevblog+fan@gmail.com\nHate Mail: eevblog+hate@gmail.com\n\nI DON'T DO PAID VIDEO SPONSORSHIPS, DON'T ASK!\n\nPLEASE:\nDo NOT ask for personal advice on something, post it in the EEVblog forum.\nI read ALL email, but please don't be offended if I don't have time to reply, I get a LOT of email.\n\nMailbag\nPO Box 7949\nBaulkham Hills NSW 2153\nAUSTRALIA");
|
||||
assert!(!channel.tags.is_empty(), "got no tags");
|
||||
assert_eq!(
|
||||
|
|
Loading…
Reference in a new issue