Compare commits

..

No commits in common. "b64aabb6b62da942740db585edce89e0615bb977" and "8026b08e2d28d79ac1336655efdeab5c99cfb445" have entirely different histories.

17 changed files with 466 additions and 2217 deletions

View file

@ -13,10 +13,11 @@ include = ["/src", "README.md", "LICENSE", "!snapshots"]
members = [".", "codegen", "cli"]
[features]
default = ["default-tls"]
all = ["rss"]
default = ["default-tls", "rss"]
all = ["rss", "html"]
rss = ["quick-xml"]
html = ["askama_escape"]
# Reqwest TLS
default-tls = ["reqwest/default-tls"]
@ -44,6 +45,7 @@ filenamify = "0.1.0"
ress = "0.11.4"
phf = "0.11.1"
base64 = "0.13.0"
askama_escape = {version = "0.10.3", optional = true}
quick-xml = {version = "0.25.0", features = ["serialize"], optional = true}
[dev-dependencies]

View file

@ -136,8 +136,15 @@ impl MapResponse<Channel<Paginator<VideoItem>>> for response::Channel {
_deobf: Option<&crate::deobfuscate::Deobfuscator>,
) -> Result<MapResult<Channel<Paginator<VideoItem>>>, ExtractionError> {
let content = map_channel_content(self.contents, self.alerts)?;
let grid = match content.content {
response::channel::ChannelContent::GridRenderer { items } => Some(items),
_ => None,
};
let channel_data = map_channel(
let v_res = grid.map(|g| map_videos(g, lang)).unwrap_or_default();
Ok(MapResult {
c: map_channel(
MapChannelData {
header: self.header,
metadata: self.metadata,
@ -145,27 +152,11 @@ impl MapResponse<Channel<Paginator<VideoItem>>> for response::Channel {
visitor_data: self.response_context.visitor_data,
has_shorts: content.has_shorts,
has_live: content.has_live,
content: v_res.c,
},
id,
lang,
)?;
let v_res = match content.content {
ChannelContent::GridRenderer { items } => {
let mut mapper =
response::YouTubeListMapper::<VideoItem>::with_channel(lang, &channel_data);
mapper.map_response(items);
MapResult {
c: Paginator::new(None, mapper.items, mapper.ctoken),
warnings: mapper.warnings,
}
}
_ => MapResult::default(),
};
Ok(MapResult {
c: combine_channel_data(channel_data, v_res.c),
)?,
warnings: v_res.warnings,
})
}
@ -179,8 +170,17 @@ impl MapResponse<Channel<Paginator<PlaylistItem>>> for response::Channel {
_deobf: Option<&crate::deobfuscate::Deobfuscator>,
) -> Result<MapResult<Channel<Paginator<PlaylistItem>>>, ExtractionError> {
let content = map_channel_content(self.contents, self.alerts)?;
let grid = match content.content {
response::channel::ChannelContent::GridRenderer { items } => Some(items),
_ => None,
};
let channel_data = map_channel(
let p_res = grid
.map(|item| map_playlists(item, lang))
.unwrap_or_default();
Ok(MapResult {
c: map_channel(
MapChannelData {
header: self.header,
metadata: self.metadata,
@ -188,27 +188,11 @@ impl MapResponse<Channel<Paginator<PlaylistItem>>> for response::Channel {
visitor_data: self.response_context.visitor_data,
has_shorts: content.has_shorts,
has_live: content.has_live,
content: p_res.c,
},
id,
lang,
)?;
let p_res = match content.content {
ChannelContent::GridRenderer { items } => {
let mut mapper =
response::YouTubeListMapper::<PlaylistItem>::with_channel(lang, &channel_data);
mapper.map_response(items);
MapResult {
c: Paginator::new(None, mapper.items, mapper.ctoken),
warnings: mapper.warnings,
}
}
_ => MapResult::default(),
};
Ok(MapResult {
c: combine_channel_data(channel_data, p_res.c),
)?,
warnings: p_res.warnings,
})
}
@ -223,23 +207,13 @@ impl MapResponse<Channel<ChannelInfo>> for response::Channel {
) -> Result<MapResult<Channel<ChannelInfo>>, ExtractionError> {
let content = map_channel_content(self.contents, self.alerts)?;
let mut warnings = Vec::new();
let meta = match content.content {
response::channel::ChannelContent::ChannelAboutFullMetadataRenderer(meta) => Some(meta),
_ => None,
};
let channel_data = map_channel(
MapChannelData {
header: self.header,
metadata: self.metadata,
microformat: self.microformat,
visitor_data: self.response_context.visitor_data,
has_shorts: content.has_shorts,
has_live: content.has_live,
},
id,
lang,
)?;
let cinfo = match content.content {
response::channel::ChannelContent::ChannelAboutFullMetadataRenderer(meta) => {
ChannelInfo {
let cinfo = meta
.map(|meta| ChannelInfo {
create_date: timeago::parse_textual_date_or_warn(
lang,
&meta.joined_date_text,
@ -258,25 +232,61 @@ impl MapResponse<Channel<ChannelInfo>> for response::Channel {
.map(|url| (l.title, util::sanitize_yt_url(&url.url)))
})
.collect(),
}
}
_ => {
})
.unwrap_or_else(|| {
warnings.push("no aboutFullMetadata".to_owned());
ChannelInfo {
create_date: None,
view_count: None,
links: Vec::new(),
}
}
};
});
Ok(MapResult {
c: combine_channel_data(channel_data, cinfo),
c: map_channel(
MapChannelData {
header: self.header,
metadata: self.metadata,
microformat: self.microformat,
visitor_data: self.response_context.visitor_data,
has_shorts: content.has_shorts,
has_live: content.has_live,
content: cinfo,
},
id,
lang,
)?,
warnings,
})
}
}
fn map_videos(
res: MapResult<Vec<response::YouTubeListItem>>,
lang: Language,
) -> MapResult<Paginator<VideoItem>> {
let mut mapper = response::YouTubeListMapper::<VideoItem>::new(lang);
mapper.map_response(res);
MapResult {
c: Paginator::new(None, mapper.items, mapper.ctoken),
warnings: mapper.warnings,
}
}
fn map_playlists(
res: MapResult<Vec<response::YouTubeListItem>>,
lang: Language,
) -> MapResult<Paginator<PlaylistItem>> {
let mut mapper = response::YouTubeListMapper::<PlaylistItem>::new(lang);
mapper.map_response(res);
MapResult {
c: Paginator::new(None, mapper.items, mapper.ctoken),
warnings: mapper.warnings,
}
}
fn map_vanity_url(url: &str, id: &str) -> Option<String> {
if url.contains(id) {
return None;
@ -289,20 +299,21 @@ fn map_vanity_url(url: &str, id: &str) -> Option<String> {
})
}
struct MapChannelData {
struct MapChannelData<T> {
header: Option<response::channel::Header>,
metadata: Option<response::channel::Metadata>,
microformat: Option<response::channel::Microformat>,
visitor_data: Option<String>,
has_shorts: bool,
has_live: bool,
content: T,
}
fn map_channel(
d: MapChannelData,
fn map_channel<T>(
d: MapChannelData<T>,
id: &str,
lang: Language,
) -> Result<Channel<()>, ExtractionError> {
) -> Result<Channel<T>, ExtractionError> {
let header = d
.header
.ok_or(ExtractionError::ContentUnavailable(Cow::Borrowed(
@ -350,7 +361,7 @@ fn map_channel(
has_shorts: d.has_shorts,
has_live: d.has_live,
visitor_data: d.visitor_data,
content: (),
content: d.content,
},
response::channel::Header::CarouselHeaderRenderer(carousel) => {
let hdata = carousel
@ -387,7 +398,7 @@ fn map_channel(
has_shorts: d.has_shorts,
has_live: d.has_live,
visitor_data: d.visitor_data,
content: (),
content: d.content,
}
}
})
@ -481,26 +492,6 @@ fn map_channel_content(
}
}
fn combine_channel_data<T>(channel_data: Channel<()>, content: T) -> Channel<T> {
Channel {
id: channel_data.id,
name: channel_data.name,
subscriber_count: channel_data.subscriber_count,
avatar: channel_data.avatar,
verification: channel_data.verification,
description: channel_data.description,
tags: channel_data.tags,
vanity_url: channel_data.vanity_url,
banner: channel_data.banner,
mobile_banner: channel_data.mobile_banner,
tv_banner: channel_data.tv_banner,
has_shorts: channel_data.has_shorts,
has_live: channel_data.has_live,
visitor_data: channel_data.visitor_data,
content,
}
}
#[cfg(test)]
mod tests {
use std::{fs::File, io::BufReader, path::Path};

View file

@ -6,7 +6,7 @@ use time::{Duration, OffsetDateTime};
use super::{ChannelBadge, ContinuationEndpoint, Thumbnails};
use crate::{
model::{Channel, ChannelId, ChannelItem, ChannelTag, PlaylistItem, VideoItem, YouTubeItem},
model::{ChannelId, ChannelItem, ChannelTag, PlaylistItem, VideoItem, YouTubeItem},
param::Language,
serializer::{
ignore_any,
@ -320,8 +320,6 @@ impl IsShort for Vec<TimeOverlay> {
#[derive(Debug)]
pub(crate) struct YouTubeListMapper<T> {
lang: Language,
channel: Option<ChannelTag>,
pub items: Vec<T>,
pub warnings: Vec<String>,
pub ctoken: Option<String>,
@ -332,24 +330,6 @@ impl<T> YouTubeListMapper<T> {
pub fn new(lang: Language) -> Self {
Self {
lang,
channel: None,
items: Vec::new(),
warnings: Vec::new(),
ctoken: None,
corrected_query: None,
}
}
pub fn with_channel<C>(lang: Language, channel: &Channel<C>) -> Self {
Self {
lang,
channel: Some(ChannelTag {
id: channel.id.to_owned(),
name: channel.name.to_owned(),
avatar: Vec::new(),
verification: channel.verification,
subscriber_count: channel.subscriber_count,
}),
items: Vec::new(),
warnings: Vec::new(),
ctoken: None,
@ -370,9 +350,7 @@ impl<T> YouTubeListMapper<T> {
title: video.title,
length: length_text.and_then(|txt| util::parse_video_length(&txt)),
thumbnail: video.thumbnail.into(),
channel: video
.channel
.and_then(|c| {
channel: video.channel.and_then(|c| {
ChannelId::try_from(c).ok().map(|c| ChannelTag {
id: c.id,
name: c.name,
@ -385,8 +363,7 @@ impl<T> YouTubeListMapper<T> {
verification: video.owner_badges.into(),
subscriber_count: None,
})
})
.or_else(|| self.channel.clone()),
}),
publish_date: video
.upcoming_event_data
.as_ref()
@ -431,7 +408,7 @@ impl<T> YouTubeListMapper<T> {
})
}),
thumbnail: video.thumbnail.into(),
channel: self.channel.clone(),
channel: None,
publish_date: None,
publish_date_txt: None,
view_count: video
@ -444,7 +421,7 @@ impl<T> YouTubeListMapper<T> {
}
}
fn map_playlist(&self, playlist: PlaylistRenderer) -> PlaylistItem {
fn map_playlist(playlist: PlaylistRenderer) -> PlaylistItem {
PlaylistItem {
id: playlist.playlist_id,
name: playlist.title,
@ -453,9 +430,7 @@ impl<T> YouTubeListMapper<T> {
.or_else(|| playlist.thumbnails.and_then(|mut t| t.try_swap_remove(0)))
.unwrap_or_default()
.into(),
channel: playlist
.channel
.and_then(|c| {
channel: playlist.channel.and_then(|c| {
ChannelId::try_from(c).ok().map(|c| ChannelTag {
id: c.id,
name: c.name,
@ -463,8 +438,7 @@ impl<T> YouTubeListMapper<T> {
verification: playlist.owner_badges.into(),
subscriber_count: None,
})
})
.or_else(|| self.channel.clone()),
}),
video_count: playlist.video_count.or_else(|| {
playlist
.video_count_short_text
@ -503,7 +477,7 @@ impl YouTubeListMapper<YouTubeItem> {
}
YouTubeListItem::PlaylistRenderer(playlist) => self
.items
.push(YouTubeItem::Playlist(self.map_playlist(playlist))),
.push(YouTubeItem::Playlist(Self::map_playlist(playlist))),
YouTubeListItem::ChannelRenderer(channel) => {
self.items
.push(YouTubeItem::Channel(Self::map_channel(channel)));
@ -567,7 +541,7 @@ impl YouTubeListMapper<PlaylistItem> {
fn map_item(&mut self, item: YouTubeListItem) {
match item {
YouTubeListItem::PlaylistRenderer(playlist) => {
self.items.push(self.map_playlist(playlist))
self.items.push(Self::map_playlist(playlist))
}
YouTubeListItem::ContinuationItemRenderer {
continuation_endpoint,

View file

@ -174,13 +174,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 1 year ago"),
view_count: Some(28847),
@ -215,13 +209,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 3 years ago"),
view_count: Some(24182),
@ -256,13 +244,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 3 years ago"),
view_count: Some(23565),
@ -297,13 +279,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 3 years ago"),
view_count: Some(25015),
@ -338,13 +314,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 3 years ago"),
view_count: Some(8752),
@ -379,13 +349,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 3 years ago"),
view_count: Some(9189),
@ -420,13 +384,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 3 years ago"),
view_count: Some(17241),
@ -461,13 +419,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 3 years ago"),
view_count: Some(47171),
@ -502,13 +454,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 3 years ago"),
view_count: Some(23998),
@ -543,13 +489,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 4 years ago"),
view_count: Some(36880),
@ -584,13 +524,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 4 years ago"),
view_count: Some(49061),
@ -625,13 +559,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 4 years ago"),
view_count: Some(13210),
@ -666,13 +594,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 4 years ago"),
view_count: Some(37927),
@ -707,13 +629,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 5 years ago"),
view_count: Some(18865),
@ -748,13 +664,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 5 years ago"),
view_count: Some(72807),
@ -789,13 +699,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 5 years ago"),
view_count: Some(61173),
@ -830,13 +734,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 6 years ago"),
view_count: Some(13529),
@ -871,13 +769,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 6 years ago"),
view_count: Some(6536),
@ -912,13 +804,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 6 years ago"),
view_count: Some(14472),
@ -953,13 +839,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 6 years ago"),
view_count: Some(21240),
@ -994,13 +874,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 6 years ago"),
view_count: Some(30840),
@ -1035,13 +909,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 6 years ago"),
view_count: Some(34258),
@ -1076,13 +944,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 6 years ago"),
view_count: Some(26864),
@ -1117,13 +979,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 6 years ago"),
view_count: Some(10757),
@ -1158,13 +1014,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 7 years ago"),
view_count: Some(21599),
@ -1199,13 +1049,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 7 years ago"),
view_count: Some(23010),
@ -1240,13 +1084,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 7 years ago"),
view_count: Some(24056),
@ -1281,13 +1119,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 7 years ago"),
view_count: Some(41211),
@ -1322,13 +1154,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 8 years ago"),
view_count: Some(25316),
@ -1363,13 +1189,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(884000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("Streamed 8 years ago"),
view_count: Some(11747),

View file

@ -158,13 +158,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(2),
),
PlaylistItem(
@ -177,13 +171,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(1),
),
PlaylistItem(
@ -196,13 +184,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(9),
),
PlaylistItem(
@ -215,13 +197,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(2),
),
PlaylistItem(
@ -234,13 +210,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(4),
),
PlaylistItem(
@ -253,13 +223,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(18),
),
PlaylistItem(
@ -272,13 +236,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(3),
),
PlaylistItem(
@ -291,13 +249,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(8),
),
PlaylistItem(
@ -310,13 +262,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(13),
),
PlaylistItem(
@ -329,13 +275,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(9),
),
PlaylistItem(
@ -348,13 +288,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(7),
),
PlaylistItem(
@ -367,13 +301,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(3),
),
PlaylistItem(
@ -386,13 +314,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(8),
),
PlaylistItem(
@ -405,13 +327,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(2),
),
PlaylistItem(
@ -424,13 +340,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(3),
),
PlaylistItem(
@ -443,13 +353,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(10),
),
PlaylistItem(
@ -462,13 +366,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(1),
),
PlaylistItem(
@ -481,13 +379,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(9),
),
PlaylistItem(
@ -500,13 +392,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(16),
),
PlaylistItem(
@ -519,13 +405,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(7),
),
PlaylistItem(
@ -538,13 +418,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(6),
),
PlaylistItem(
@ -557,13 +431,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(12),
),
PlaylistItem(
@ -576,13 +444,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(1),
),
PlaylistItem(
@ -595,13 +457,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(5),
),
PlaylistItem(
@ -614,13 +470,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(2),
),
PlaylistItem(
@ -633,13 +483,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(4),
),
PlaylistItem(
@ -652,13 +496,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(1),
),
PlaylistItem(
@ -671,13 +509,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(2),
),
PlaylistItem(
@ -690,13 +522,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(9),
),
PlaylistItem(
@ -709,13 +535,7 @@ Channel(
height: 270,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(881000),
)),
channel: None,
video_count: Some(1),
),
],

View file

@ -130,13 +130,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(593),
@ -156,13 +150,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(141),
@ -182,13 +170,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(652),
@ -208,13 +190,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(795),
@ -234,13 +210,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(17),
@ -260,13 +230,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(1),
@ -286,13 +250,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(15),
@ -312,13 +270,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(26),
@ -338,13 +290,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(864),
@ -364,13 +310,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(21),
@ -390,13 +330,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(1),
@ -416,13 +350,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(45),
@ -442,13 +370,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(18),
@ -468,13 +390,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(16),
@ -494,13 +410,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(13),
@ -520,13 +430,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(34),
@ -546,13 +450,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(13),
@ -572,13 +470,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(756),
@ -598,13 +490,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(13),
@ -624,13 +510,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(39),
@ -650,13 +530,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(18),
@ -676,13 +550,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(31),
@ -702,13 +570,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(17),
@ -728,13 +590,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(18),
@ -754,13 +610,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(18),
@ -780,13 +630,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(11),
@ -806,13 +650,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(31),
@ -832,13 +670,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(688),
@ -858,13 +690,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(19),
@ -884,13 +710,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(1),
@ -910,13 +730,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(64),
@ -936,13 +750,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(16),
@ -962,13 +770,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(27),
@ -988,13 +790,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(25),
@ -1014,13 +810,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(2),
@ -1040,13 +830,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(53),
@ -1066,13 +850,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(2),
@ -1092,13 +870,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(91),
@ -1118,13 +890,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(26),
@ -1144,13 +910,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(65),
@ -1170,13 +930,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(22),
@ -1196,13 +950,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(66),
@ -1222,13 +970,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(39),
@ -1248,13 +990,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(978),
@ -1274,13 +1010,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(45),
@ -1300,13 +1030,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(21),
@ -1326,13 +1050,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(4),
@ -1352,13 +1070,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2980000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(63),

View file

@ -145,13 +145,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("9 hours ago"),
view_count: Some(142423),
@ -186,13 +180,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("7 days ago"),
view_count: Some(989763),
@ -227,13 +215,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 weeks ago"),
view_count: Some(355470),
@ -268,13 +250,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 weeks ago"),
view_count: Some(697188),
@ -309,13 +285,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("4 weeks ago"),
view_count: Some(529586),
@ -350,13 +320,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(1066729),
@ -391,13 +355,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(525663),
@ -432,13 +390,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(717806),
@ -473,13 +425,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(624673),
@ -514,13 +460,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(924135),
@ -555,13 +495,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(1053353),
@ -596,13 +530,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(697242),
@ -637,13 +565,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("4 months ago"),
view_count: Some(1086097),
@ -678,13 +600,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("4 months ago"),
view_count: Some(528979),
@ -719,13 +635,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("4 months ago"),
view_count: Some(1036890),
@ -760,13 +670,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("4 months ago"),
view_count: Some(832542),
@ -801,13 +705,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("4 months ago"),
view_count: Some(1342882),
@ -842,13 +740,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("4 months ago"),
view_count: Some(1076848),
@ -883,13 +775,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("5 months ago"),
view_count: Some(562349),
@ -924,13 +810,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("6 months ago"),
view_count: Some(531938),
@ -965,13 +845,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("6 months ago"),
view_count: Some(426469),
@ -1006,13 +880,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("6 months ago"),
view_count: Some(448915),
@ -1047,13 +915,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("6 months ago"),
view_count: Some(675443),
@ -1088,13 +950,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("6 months ago"),
view_count: Some(426465),
@ -1129,13 +985,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("7 months ago"),
view_count: Some(1137831),
@ -1170,13 +1020,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("7 months ago"),
view_count: Some(612275),
@ -1211,13 +1055,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("7 months ago"),
view_count: Some(396397),
@ -1252,13 +1090,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("7 months ago"),
view_count: Some(599030),
@ -1293,13 +1125,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("7 months ago"),
view_count: Some(530192),
@ -1334,13 +1160,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2930000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("8 months ago"),
view_count: Some(567604),

View file

@ -174,13 +174,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 day ago"),
view_count: Some(8813),
@ -215,13 +209,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("6 days ago"),
view_count: Some(48599),
@ -256,13 +244,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("10 days ago"),
view_count: Some(74126),
@ -297,13 +279,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("11 days ago"),
view_count: Some(36129),
@ -338,13 +314,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 weeks ago"),
view_count: Some(87357),
@ -379,13 +349,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 weeks ago"),
view_count: Some(48259),
@ -420,13 +384,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 weeks ago"),
view_count: Some(27509),
@ -461,13 +419,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 weeks ago"),
view_count: Some(57925),
@ -502,13 +454,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(77907),
@ -543,13 +489,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(63421),
@ -584,13 +524,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(73052),
@ -625,13 +559,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(93529),
@ -666,13 +594,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(41569),
@ -707,13 +629,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(22842),
@ -748,13 +664,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(41621),
@ -789,13 +699,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(77542),
@ -830,13 +734,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(34947),
@ -871,13 +769,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(45618),
@ -912,13 +804,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(34868),
@ -953,13 +839,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(64336),
@ -994,13 +874,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(150958),
@ -1035,13 +909,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(30903),
@ -1076,13 +944,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(48669),
@ -1117,13 +979,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(83505),
@ -1158,13 +1014,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(42843),
@ -1199,13 +1049,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(26036),
@ -1240,13 +1084,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(63729),
@ -1281,13 +1119,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(22920),
@ -1322,13 +1154,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(66042),
@ -1363,13 +1189,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(883000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(52065),

View file

@ -174,13 +174,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("20 hours ago"),
view_count: Some(19739),
@ -215,13 +209,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("5 days ago"),
view_count: Some(24194),
@ -256,13 +244,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("7 days ago"),
view_count: Some(51443),
@ -297,13 +279,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("13 days ago"),
view_count: Some(72324),
@ -338,13 +314,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 weeks ago"),
view_count: Some(57348),
@ -379,13 +349,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 weeks ago"),
view_count: Some(68645),
@ -420,13 +384,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 weeks ago"),
view_count: Some(91388),
@ -461,13 +419,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 weeks ago"),
view_count: Some(39993),
@ -502,13 +454,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("4 weeks ago"),
view_count: Some(22512),
@ -543,13 +489,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(40137),
@ -584,13 +524,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(74510),
@ -625,13 +559,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(34487),
@ -666,13 +594,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(44928),
@ -707,13 +629,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(34324),
@ -748,13 +664,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(63763),
@ -789,13 +699,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(149186),
@ -830,13 +734,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(30130),
@ -871,13 +769,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(48037),
@ -912,13 +804,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(81958),
@ -953,13 +839,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(42635),
@ -994,13 +874,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(25860),
@ -1035,13 +909,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(63035),
@ -1076,13 +944,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(22731),
@ -1117,13 +979,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(65765),
@ -1158,13 +1014,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(51555),
@ -1199,13 +1049,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(46638),
@ -1240,13 +1084,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(62921),
@ -1281,13 +1119,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(66895),
@ -1322,13 +1154,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(25894),
@ -1363,13 +1189,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC2DjFE7Xf11URZqWBigcVOQ",
name: "EEVblog",
avatar: [],
verification: Verified,
subscriber_count: Some(880000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(80173),

View file

@ -158,13 +158,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(94),
@ -199,13 +193,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(381),
@ -240,13 +228,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 year ago"),
view_count: Some(241528),
@ -281,13 +263,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 year ago"),
view_count: Some(118351),
@ -322,13 +298,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 year ago"),
view_count: Some(157971),
@ -363,13 +333,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 year ago"),
view_count: Some(82309),
@ -404,13 +368,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(2043),
@ -445,13 +403,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 years ago"),
view_count: Some(186475),
@ -486,13 +438,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 years ago"),
view_count: Some(66425),
@ -527,13 +473,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 years ago"),
view_count: Some(1520020),
@ -568,13 +508,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 years ago"),
view_count: Some(37549),
@ -609,13 +543,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 years ago"),
view_count: Some(33002),
@ -650,13 +578,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 years ago"),
view_count: Some(42036),
@ -691,13 +613,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 years ago"),
view_count: Some(322935),
@ -732,13 +648,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 years ago"),
view_count: Some(91980),
@ -773,13 +683,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: None,
view_count: Some(4030),
@ -814,13 +718,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 years ago"),
view_count: Some(288098),
@ -855,13 +753,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 years ago"),
view_count: Some(50818),
@ -896,13 +788,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 years ago"),
view_count: Some(98431),
@ -937,13 +823,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 years ago"),
view_count: Some(572456),
@ -978,13 +858,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UChs0pSaEoNLV4mevBFGaoKA",
name: "The Good Life Radio x Sensual Musique",
avatar: [],
verification: Verified,
subscriber_count: Some(760000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 years ago"),
view_count: Some(3114909),

View file

@ -130,13 +130,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 day ago"),
view_count: Some(443549),
@ -156,13 +150,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 days ago"),
view_count: Some(1154962),
@ -197,13 +185,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 days ago"),
view_count: Some(477460),
@ -223,13 +205,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("6 days ago"),
view_count: Some(1388173),
@ -249,13 +225,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("7 days ago"),
view_count: Some(1738301),
@ -275,13 +245,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("9 days ago"),
view_count: Some(1316594),
@ -316,13 +280,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("10 days ago"),
view_count: Some(478703),
@ -342,13 +300,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("11 days ago"),
view_count: Some(1412213),
@ -368,13 +320,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("13 days ago"),
view_count: Some(1513305),
@ -394,13 +340,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 weeks ago"),
view_count: Some(8936223),
@ -435,13 +375,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 weeks ago"),
view_count: Some(987083),
@ -461,13 +395,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 weeks ago"),
view_count: Some(2769717),
@ -502,13 +430,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 weeks ago"),
view_count: Some(497660),
@ -528,13 +450,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 weeks ago"),
view_count: Some(572107),
@ -554,13 +470,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 weeks ago"),
view_count: Some(1707132),
@ -580,13 +490,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 weeks ago"),
view_count: Some(933094),
@ -606,13 +510,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(5985184),
@ -632,13 +530,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(14741387),
@ -658,13 +550,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(2511322),
@ -684,13 +570,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(2364408),
@ -725,13 +605,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(706059),
@ -751,13 +625,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(1947627),
@ -777,13 +645,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(4763839),
@ -803,13 +665,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(1915695),
@ -829,13 +685,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(7268944),
@ -855,13 +705,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(2539103),
@ -881,13 +725,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(5545680),
@ -907,13 +745,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(2202314),
@ -948,13 +780,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(613416),
@ -974,13 +800,7 @@ Channel(
height: 720,
),
],
channel: Some(ChannelTag(
id: "UCh8gHdtzO2tXd593_bjErWg",
name: "Doobydobap",
avatar: [],
verification: Verified,
subscriber_count: Some(2840000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(6443699),

View file

@ -162,13 +162,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: Some("2022-09-27T16:00:00Z"),
publish_date_txt: None,
view_count: Some(237),
@ -203,13 +197,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("13 days ago"),
view_count: Some(742284),
@ -244,13 +232,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 weeks ago"),
view_count: Some(420368),
@ -285,13 +267,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 weeks ago"),
view_count: Some(528718),
@ -326,13 +302,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(897237),
@ -367,13 +337,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(526638),
@ -408,13 +372,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(368801),
@ -449,13 +407,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(286737),
@ -490,13 +442,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("1 month ago"),
view_count: Some(664499),
@ -531,13 +477,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(592227),
@ -572,13 +512,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(396946),
@ -613,13 +547,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("2 months ago"),
view_count: Some(778430),
@ -654,13 +582,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(2118499),
@ -695,13 +617,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(525824),
@ -736,13 +652,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("3 months ago"),
view_count: Some(1097056),
@ -777,13 +687,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("4 months ago"),
view_count: Some(1532114),
@ -818,13 +722,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("4 months ago"),
view_count: Some(511601),
@ -859,13 +757,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("4 months ago"),
view_count: Some(662099),
@ -900,13 +792,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("4 months ago"),
view_count: Some(549826),
@ -941,13 +827,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("4 months ago"),
view_count: Some(538197),
@ -982,13 +862,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("5 months ago"),
view_count: Some(536648),
@ -1023,13 +897,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("5 months ago"),
view_count: Some(724630),
@ -1064,13 +932,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("5 months ago"),
view_count: Some(426960),
@ -1105,13 +967,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("6 months ago"),
view_count: Some(735941),
@ -1146,13 +1002,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("6 months ago"),
view_count: Some(502205),
@ -1187,13 +1037,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("6 months ago"),
view_count: Some(718668),
@ -1228,13 +1072,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("7 months ago"),
view_count: Some(775830),
@ -1269,13 +1107,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("7 months ago"),
view_count: Some(480357),
@ -1310,13 +1142,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("7 months ago"),
view_count: Some(460878),
@ -1351,13 +1177,7 @@ Channel(
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCcvfHa-GHSOHFAjU0-Ie57A",
name: "Adam Something",
avatar: [],
verification: Verified,
subscriber_count: Some(947000),
)),
channel: None,
publish_date: "[date]",
publish_date_txt: Some("7 months ago"),
view_count: Some(228151),

View file

@ -1,64 +0,0 @@
use super::{Channel, ChannelId, ChannelItem, ChannelTag, PlaylistItem, VideoItem, YouTubeItem};
impl TryFrom<YouTubeItem> for VideoItem {
type Error = ();
fn try_from(value: YouTubeItem) -> Result<Self, Self::Error> {
match value {
YouTubeItem::Video(video) => Ok(video),
_ => Err(()),
}
}
}
impl TryFrom<YouTubeItem> for PlaylistItem {
type Error = ();
fn try_from(value: YouTubeItem) -> Result<Self, Self::Error> {
match value {
YouTubeItem::Playlist(playlist) => Ok(playlist),
_ => Err(()),
}
}
}
impl TryFrom<YouTubeItem> for ChannelItem {
type Error = ();
fn try_from(value: YouTubeItem) -> Result<Self, Self::Error> {
match value {
YouTubeItem::Channel(channel) => Ok(channel),
_ => Err(()),
}
}
}
impl<T> From<Channel<T>> for ChannelTag {
fn from(channel: Channel<T>) -> Self {
Self {
id: channel.id,
name: channel.name,
avatar: channel.avatar,
verification: channel.verification,
subscriber_count: channel.subscriber_count,
}
}
}
impl From<ChannelTag> for ChannelId {
fn from(channel: ChannelTag) -> Self {
Self {
id: channel.id,
name: channel.name,
}
}
}
impl<T> From<Channel<T>> for ChannelId {
fn from(channel: Channel<T>) -> Self {
Self {
id: channel.id,
name: channel.name,
}
}
}

View file

@ -1,6 +1,5 @@
//! YouTube API request and response models
mod convert;
mod ordering;
mod paginator;
pub mod richtext;
@ -851,3 +850,36 @@ pub struct PlaylistItem {
/// Number of playlist videos
pub video_count: Option<u64>,
}
impl TryFrom<YouTubeItem> for VideoItem {
type Error = ();
fn try_from(value: YouTubeItem) -> Result<Self, Self::Error> {
match value {
YouTubeItem::Video(video) => Ok(video),
_ => Err(()),
}
}
}
impl TryFrom<YouTubeItem> for PlaylistItem {
type Error = ();
fn try_from(value: YouTubeItem) -> Result<Self, Self::Error> {
match value {
YouTubeItem::Playlist(playlist) => Ok(playlist),
_ => Err(()),
}
}
}
impl TryFrom<YouTubeItem> for ChannelItem {
type Error = ();
fn try_from(value: YouTubeItem) -> Result<Self, Self::Error> {
match value {
YouTubeItem::Channel(channel) => Ok(channel),
_ => Err(()),
}
}
}

View file

@ -2,8 +2,6 @@
use serde::{Deserialize, Serialize};
use crate::util;
use super::UrlTarget;
#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
@ -34,6 +32,8 @@ pub trait ToPlaintext {
}
/// Trait for converting rich text to html.
#[cfg(feature = "html")]
#[cfg_attr(docsrs, doc(cfg(feature = "html")))]
pub trait ToHtml {
/// Convert rich text to html.
fn to_html(&self) -> String {
@ -72,22 +72,26 @@ impl ToPlaintext for TextComponent {
}
}
#[cfg(feature = "html")]
#[cfg_attr(docsrs, doc(cfg(feature = "html")))]
impl ToHtml for TextComponent {
fn to_html_yt_host(&self, yt_host: &str) -> String {
match self {
TextComponent::Text(text) => util::escape_html(text),
TextComponent::Text(text) => askama_escape::escape(&text, askama_escape::Html)
.to_string()
.replace("\n", "<br>"),
TextComponent::Web { text, .. } => {
format!(
r#"<a href="{}" target="_blank" rel="noreferrer">{}</a>"#,
self.get_url(yt_host),
util::escape_html(text)
askama_escape::escape(text, askama_escape::Html)
)
}
_ => {
format!(
r#"<a href="{}">{}</a>"#,
self.get_url(yt_host),
util::escape_html(self.get_text())
askama_escape::escape(self.get_text(), askama_escape::Html)
)
}
}
@ -103,6 +107,8 @@ impl ToPlaintext for RichText {
}
}
#[cfg(feature = "html")]
#[cfg_attr(docsrs, doc(cfg(feature = "html")))]
impl ToHtml for RichText {
fn to_html_yt_host(&self, yt_host: &str) -> String {
self.0.iter().map(|c| c.to_html_yt_host(yt_host)).collect()
@ -180,6 +186,7 @@ aespa 에스파 'Black Mamba' MV ℗ SM Entertainment"#
);
}
#[cfg(feature = "html")]
#[test]
fn t_to_html() {
let richtext = RichText::from(TEXT_SOURCE.clone());

View file

@ -312,24 +312,6 @@ where
.ok()
}
/// Replace all html control characters to make a string safe for inserting into HTML.
pub fn escape_html(input: &str) -> String {
let mut buf = String::with_capacity(input.len());
for c in input.chars() {
match c {
'<' => buf.push_str("&lt;"),
'>' => buf.push_str("&gt;"),
'&' => buf.push_str("&amp;"),
'"' => buf.push_str("&quot;"),
'\'' => buf.push_str("&#x27;"),
'\n' => buf.push_str("<br>"),
_ => buf.push(c),
};
}
buf
}
#[cfg(test)]
mod tests {
use std::{fs::File, io::BufReader, path::Path};

View file

@ -1,7 +1,7 @@
use std::collections::HashSet;
use rstest::rstest;
use time::macros::date;
use time::macros::{date, datetime};
use time::OffsetDateTime;
use rustypipe::client::{ClientType, RustyPipe};
@ -1138,7 +1138,6 @@ async fn channel_not_found(#[case] id: &str) {
#[cfg(feature = "rss")]
mod channel_rss {
use super::*;
use time::macros::datetime;
#[tokio::test]
async fn get_channel_rss() {