refactor: use unified models for video/playlist/channel
This commit is contained in:
parent
b22f6995cc
commit
dbcb7fe0df
41 changed files with 2156 additions and 1228 deletions
|
|
@ -3,17 +3,14 @@ use url::Url;
|
|||
|
||||
use crate::{
|
||||
error::{Error, ExtractionError},
|
||||
model::{Channel, ChannelInfo, ChannelPlaylist, ChannelVideo, Paginator},
|
||||
model::{Channel, ChannelInfo, Paginator, PlaylistItem, VideoItem},
|
||||
param::{ChannelOrder, Language},
|
||||
serializer::MapResult,
|
||||
timeago,
|
||||
util::{self, TryRemove},
|
||||
};
|
||||
|
||||
use super::{
|
||||
response::{self, FromWLang},
|
||||
ClientType, MapResponse, QContinuation, RustyPipeQuery, YTContext,
|
||||
};
|
||||
use super::{response, ClientType, MapResponse, RustyPipeQuery, YTContext};
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
|
|
@ -41,7 +38,7 @@ impl RustyPipeQuery {
|
|||
pub async fn channel_videos(
|
||||
self,
|
||||
channel_id: &str,
|
||||
) -> Result<Channel<Paginator<ChannelVideo>>, Error> {
|
||||
) -> Result<Channel<Paginator<VideoItem>>, Error> {
|
||||
self.channel_videos_ordered(channel_id, ChannelOrder::default())
|
||||
.await
|
||||
}
|
||||
|
|
@ -50,7 +47,7 @@ impl RustyPipeQuery {
|
|||
self,
|
||||
channel_id: &str,
|
||||
order: ChannelOrder,
|
||||
) -> Result<Channel<Paginator<ChannelVideo>>, Error> {
|
||||
) -> Result<Channel<Paginator<VideoItem>>, Error> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
let request_body = QChannel {
|
||||
context,
|
||||
|
|
@ -72,30 +69,10 @@ impl RustyPipeQuery {
|
|||
.await
|
||||
}
|
||||
|
||||
pub async fn channel_videos_continuation(
|
||||
self,
|
||||
ctoken: &str,
|
||||
) -> Result<Paginator<ChannelVideo>, Error> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
let request_body = QContinuation {
|
||||
context,
|
||||
continuation: ctoken,
|
||||
};
|
||||
|
||||
self.execute_request::<response::ChannelCont, _, _>(
|
||||
ClientType::Desktop,
|
||||
"channel_videos_continuation",
|
||||
ctoken,
|
||||
"browse",
|
||||
&request_body,
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn channel_playlists(
|
||||
self,
|
||||
channel_id: &str,
|
||||
) -> Result<Channel<Paginator<ChannelPlaylist>>, Error> {
|
||||
) -> Result<Channel<Paginator<PlaylistItem>>, Error> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
let request_body = QChannel {
|
||||
context,
|
||||
|
|
@ -113,26 +90,6 @@ impl RustyPipeQuery {
|
|||
.await
|
||||
}
|
||||
|
||||
pub async fn channel_playlists_continuation(
|
||||
self,
|
||||
ctoken: &str,
|
||||
) -> Result<Paginator<ChannelPlaylist>, Error> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
let request_body = QContinuation {
|
||||
context,
|
||||
continuation: ctoken,
|
||||
};
|
||||
|
||||
self.execute_request::<response::ChannelCont, _, _>(
|
||||
ClientType::Desktop,
|
||||
"channel_playlists_continuation",
|
||||
ctoken,
|
||||
"browse",
|
||||
&request_body,
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn channel_info(&self, channel_id: &str) -> Result<Channel<ChannelInfo>, Error> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
let request_body = QChannel {
|
||||
|
|
@ -152,13 +109,13 @@ impl RustyPipeQuery {
|
|||
}
|
||||
}
|
||||
|
||||
impl MapResponse<Channel<Paginator<ChannelVideo>>> for response::Channel {
|
||||
impl MapResponse<Channel<Paginator<VideoItem>>> for response::Channel {
|
||||
fn map_response(
|
||||
self,
|
||||
id: &str,
|
||||
lang: Language,
|
||||
_deobf: Option<&crate::deobfuscate::Deobfuscator>,
|
||||
) -> Result<MapResult<Channel<Paginator<ChannelVideo>>>, ExtractionError> {
|
||||
) -> Result<MapResult<Channel<Paginator<VideoItem>>>, ExtractionError> {
|
||||
let content = map_channel_content(self.contents, id, self.alerts)?;
|
||||
let grid = match content {
|
||||
response::channel::ChannelContent::GridRenderer { items } => Some(items),
|
||||
|
|
@ -181,20 +138,22 @@ impl MapResponse<Channel<Paginator<ChannelVideo>>> for response::Channel {
|
|||
}
|
||||
}
|
||||
|
||||
impl MapResponse<Channel<Paginator<ChannelPlaylist>>> for response::Channel {
|
||||
impl MapResponse<Channel<Paginator<PlaylistItem>>> for response::Channel {
|
||||
fn map_response(
|
||||
self,
|
||||
id: &str,
|
||||
lang: Language,
|
||||
_deobf: Option<&crate::deobfuscate::Deobfuscator>,
|
||||
) -> Result<MapResult<Channel<Paginator<ChannelPlaylist>>>, ExtractionError> {
|
||||
) -> Result<MapResult<Channel<Paginator<PlaylistItem>>>, ExtractionError> {
|
||||
let content = map_channel_content(self.contents, id, self.alerts)?;
|
||||
let grid = match content {
|
||||
response::channel::ChannelContent::GridRenderer { items } => Some(items),
|
||||
_ => None,
|
||||
};
|
||||
|
||||
let p_res = grid.map(map_playlists).unwrap_or_default();
|
||||
let p_res = grid
|
||||
.map(|item| map_playlists(item, lang))
|
||||
.unwrap_or_default();
|
||||
|
||||
Ok(MapResult {
|
||||
c: map_channel(
|
||||
|
|
@ -267,98 +226,29 @@ impl MapResponse<Channel<ChannelInfo>> for response::Channel {
|
|||
}
|
||||
}
|
||||
|
||||
impl MapResponse<Paginator<ChannelVideo>> for response::ChannelCont {
|
||||
fn map_response(
|
||||
self,
|
||||
_id: &str,
|
||||
lang: Language,
|
||||
_deobf: Option<&crate::deobfuscate::Deobfuscator>,
|
||||
) -> Result<MapResult<Paginator<ChannelVideo>>, ExtractionError> {
|
||||
let mut actions = self.on_response_received_actions;
|
||||
let res = actions
|
||||
.try_swap_remove(0)
|
||||
.ok_or(ExtractionError::Retry)?
|
||||
.append_continuation_items_action
|
||||
.continuation_items;
|
||||
|
||||
Ok(map_videos(res, lang))
|
||||
}
|
||||
}
|
||||
|
||||
impl MapResponse<Paginator<ChannelPlaylist>> for response::ChannelCont {
|
||||
fn map_response(
|
||||
self,
|
||||
_id: &str,
|
||||
_lang: Language,
|
||||
_deobf: Option<&crate::deobfuscate::Deobfuscator>,
|
||||
) -> Result<MapResult<Paginator<ChannelPlaylist>>, ExtractionError> {
|
||||
let mut actions = self.on_response_received_actions;
|
||||
let res = actions
|
||||
.try_swap_remove(0)
|
||||
.ok_or(ExtractionError::Retry)?
|
||||
.append_continuation_items_action
|
||||
.continuation_items;
|
||||
|
||||
Ok(map_playlists(res))
|
||||
}
|
||||
}
|
||||
|
||||
fn map_videos(
|
||||
res: MapResult<Vec<response::VideoListItem>>,
|
||||
res: MapResult<Vec<response::YouTubeListItem>>,
|
||||
lang: Language,
|
||||
) -> MapResult<Paginator<ChannelVideo>> {
|
||||
let mut ctoken = None;
|
||||
let videos = res
|
||||
.c
|
||||
.into_iter()
|
||||
.filter_map(|item| match item {
|
||||
response::VideoListItem::GridVideoRenderer(video) => {
|
||||
Some(ChannelVideo::from_w_lang(video, lang))
|
||||
}
|
||||
response::VideoListItem::RichItemRenderer {
|
||||
content: response::RichItem::VideoRenderer(video),
|
||||
} => Some(ChannelVideo::from_w_lang(video, lang)),
|
||||
response::VideoListItem::ContinuationItemRenderer {
|
||||
continuation_endpoint,
|
||||
} => {
|
||||
ctoken = Some(continuation_endpoint.continuation_command.token);
|
||||
None
|
||||
}
|
||||
_ => None,
|
||||
})
|
||||
.collect();
|
||||
) -> MapResult<Paginator<VideoItem>> {
|
||||
let mut mapper = response::YouTubeListMapper::<VideoItem>::new(lang);
|
||||
mapper.map_response(res);
|
||||
|
||||
MapResult {
|
||||
c: Paginator::new(None, videos, ctoken),
|
||||
warnings: res.warnings,
|
||||
c: Paginator::new(None, mapper.items, mapper.ctoken),
|
||||
warnings: mapper.warnings,
|
||||
}
|
||||
}
|
||||
|
||||
fn map_playlists(
|
||||
res: MapResult<Vec<response::VideoListItem>>,
|
||||
) -> MapResult<Paginator<ChannelPlaylist>> {
|
||||
let mut ctoken = None;
|
||||
let playlists = res
|
||||
.c
|
||||
.into_iter()
|
||||
.filter_map(|item| match item {
|
||||
response::VideoListItem::GridPlaylistRenderer(playlist) => Some(playlist.into()),
|
||||
response::VideoListItem::RichItemRenderer {
|
||||
content: response::RichItem::PlaylistRenderer(playlist),
|
||||
} => Some(playlist.into()),
|
||||
response::VideoListItem::ContinuationItemRenderer {
|
||||
continuation_endpoint,
|
||||
} => {
|
||||
ctoken = Some(continuation_endpoint.continuation_command.token);
|
||||
None
|
||||
}
|
||||
_ => None,
|
||||
})
|
||||
.collect();
|
||||
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, playlists, ctoken),
|
||||
warnings: res.warnings,
|
||||
c: Paginator::new(None, mapper.items, mapper.ctoken),
|
||||
warnings: mapper.warnings,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -516,7 +406,7 @@ mod tests {
|
|||
|
||||
use crate::{
|
||||
client::{response, MapResponse},
|
||||
model::{Channel, ChannelInfo, ChannelPlaylist, ChannelVideo, Paginator},
|
||||
model::{Channel, ChannelInfo, Paginator, PlaylistItem, VideoItem},
|
||||
param::Language,
|
||||
serializer::MapResult,
|
||||
};
|
||||
|
|
@ -537,7 +427,7 @@ mod tests {
|
|||
|
||||
let channel: response::Channel =
|
||||
serde_json::from_reader(BufReader::new(json_file)).unwrap();
|
||||
let map_res: MapResult<Channel<Paginator<ChannelVideo>>> =
|
||||
let map_res: MapResult<Channel<Paginator<VideoItem>>> =
|
||||
channel.map_response(id, Language::En, None).unwrap();
|
||||
|
||||
assert!(
|
||||
|
|
@ -557,27 +447,6 @@ mod tests {
|
|||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn map_channel_videos_cont() {
|
||||
let json_path = Path::new("testfiles/channel/channel_videos_cont.json");
|
||||
let json_file = File::open(json_path).unwrap();
|
||||
|
||||
let channel: response::ChannelCont =
|
||||
serde_json::from_reader(BufReader::new(json_file)).unwrap();
|
||||
let map_res: MapResult<Paginator<ChannelVideo>> = channel
|
||||
.map_response("UC2DjFE7Xf11URZqWBigcVOQ", Language::En, None)
|
||||
.unwrap();
|
||||
|
||||
assert!(
|
||||
map_res.warnings.is_empty(),
|
||||
"deserialization/mapping warnings: {:?}",
|
||||
map_res.warnings
|
||||
);
|
||||
insta::assert_ron_snapshot!("map_channel_videos_cont", map_res.c, {
|
||||
".items[].publish_date" => "[date]",
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn map_channel_playlists() {
|
||||
let json_path = Path::new("testfiles/channel/channel_playlists.json");
|
||||
|
|
@ -585,7 +454,7 @@ mod tests {
|
|||
|
||||
let channel: response::Channel =
|
||||
serde_json::from_reader(BufReader::new(json_file)).unwrap();
|
||||
let map_res: MapResult<Channel<Paginator<ChannelPlaylist>>> = channel
|
||||
let map_res: MapResult<Channel<Paginator<PlaylistItem>>> = channel
|
||||
.map_response("UC2DjFE7Xf11URZqWBigcVOQ", Language::En, None)
|
||||
.unwrap();
|
||||
|
||||
|
|
@ -597,25 +466,6 @@ mod tests {
|
|||
insta::assert_ron_snapshot!("map_channel_playlists", map_res.c);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn map_channel_playlists_cont() {
|
||||
let json_path = Path::new("testfiles/channel/channel_playlists_cont.json");
|
||||
let json_file = File::open(json_path).unwrap();
|
||||
|
||||
let channel: response::ChannelCont =
|
||||
serde_json::from_reader(BufReader::new(json_file)).unwrap();
|
||||
let map_res: MapResult<Paginator<ChannelPlaylist>> = channel
|
||||
.map_response("UC2DjFE7Xf11URZqWBigcVOQ", Language::En, None)
|
||||
.unwrap();
|
||||
|
||||
assert!(
|
||||
map_res.warnings.is_empty(),
|
||||
"deserialization/mapping warnings: {:?}",
|
||||
map_res.warnings
|
||||
);
|
||||
insta::assert_ron_snapshot!("map_channel_playlists_cont", map_res.c);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn map_channel_info() {
|
||||
let json_path = Path::new("testfiles/channel/channel_info.json");
|
||||
|
|
|
|||
|
|
@ -1,10 +1,83 @@
|
|||
use crate::error::Error;
|
||||
use crate::error::{Error, ExtractionError};
|
||||
use crate::model::{
|
||||
ChannelPlaylist, ChannelVideo, Comment, Paginator, PlaylistVideo, RecommendedVideo, SearchItem,
|
||||
SearchVideo,
|
||||
Comment, ContinuationEndpoint, Paginator, PlaylistVideo, RecommendedVideo, SearchVideo,
|
||||
YouTubeItem,
|
||||
};
|
||||
use crate::serializer::MapResult;
|
||||
use crate::util::TryRemove;
|
||||
|
||||
use super::RustyPipeQuery;
|
||||
use super::{response, ClientType, MapResponse, QContinuation, RustyPipeQuery};
|
||||
|
||||
impl RustyPipeQuery {
|
||||
pub async fn continuation<T: TryFrom<YouTubeItem>>(
|
||||
self,
|
||||
ctoken: &str,
|
||||
endpoint: ContinuationEndpoint,
|
||||
) -> Result<Paginator<T>, Error> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
let request_body = QContinuation {
|
||||
context,
|
||||
continuation: ctoken,
|
||||
};
|
||||
|
||||
let p = self
|
||||
.execute_request::<response::Continuation, Paginator<YouTubeItem>, _>(
|
||||
ClientType::Desktop,
|
||||
"continuation",
|
||||
ctoken,
|
||||
endpoint.as_str(),
|
||||
&request_body,
|
||||
)
|
||||
.await?;
|
||||
|
||||
Ok(Paginator {
|
||||
count: p.count,
|
||||
items: p
|
||||
.items
|
||||
.into_iter()
|
||||
.filter_map(|item| T::try_from(item).ok())
|
||||
.collect(),
|
||||
ctoken: p.ctoken,
|
||||
visitor_data: p.visitor_data,
|
||||
endpoint,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: TryFrom<YouTubeItem>> MapResponse<Paginator<T>> for response::Continuation {
|
||||
fn map_response(
|
||||
self,
|
||||
_id: &str,
|
||||
lang: crate::param::Language,
|
||||
_deobf: Option<&crate::deobfuscate::Deobfuscator>,
|
||||
) -> Result<MapResult<Paginator<T>>, ExtractionError> {
|
||||
let mut actions = self.on_response_received_actions;
|
||||
let items = some_or_bail!(
|
||||
actions.try_swap_remove(0),
|
||||
Err(ExtractionError::InvalidData(
|
||||
"no item section renderer".into()
|
||||
))
|
||||
)
|
||||
.append_continuation_items_action
|
||||
.continuation_items;
|
||||
|
||||
let mut mapper = response::YouTubeListMapper::<YouTubeItem>::new(lang);
|
||||
mapper.map_response(items);
|
||||
|
||||
Ok(MapResult {
|
||||
c: Paginator::new(
|
||||
self.estimated_results,
|
||||
mapper
|
||||
.items
|
||||
.into_iter()
|
||||
.filter_map(|item| T::try_from(item).ok())
|
||||
.collect(),
|
||||
mapper.ctoken,
|
||||
),
|
||||
warnings: mapper.warnings,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! paginator {
|
||||
($entity_type:ty, $cont_function:path) => {
|
||||
|
|
@ -62,15 +135,10 @@ macro_rules! paginator {
|
|||
};
|
||||
}
|
||||
|
||||
paginator!(Comment, RustyPipeQuery::video_comments);
|
||||
|
||||
paginator!(PlaylistVideo, RustyPipeQuery::playlist_continuation);
|
||||
paginator!(RecommendedVideo, RustyPipeQuery::video_recommendations);
|
||||
paginator!(Comment, RustyPipeQuery::video_comments);
|
||||
paginator!(ChannelVideo, RustyPipeQuery::channel_videos_continuation);
|
||||
paginator!(
|
||||
ChannelPlaylist,
|
||||
RustyPipeQuery::channel_playlists_continuation
|
||||
);
|
||||
paginator!(SearchItem, RustyPipeQuery::search_continuation);
|
||||
|
||||
impl Paginator<SearchVideo> {
|
||||
pub async fn next(&self, query: RustyPipeQuery) -> Result<Option<Self>, Error> {
|
||||
|
|
@ -125,3 +193,111 @@ impl Paginator<SearchVideo> {
|
|||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: TryFrom<YouTubeItem>> Paginator<T> {
|
||||
pub async fn next(&self, query: RustyPipeQuery) -> Result<Option<Self>, Error> {
|
||||
Ok(match &self.ctoken {
|
||||
Some(ctoken) => Some(query.continuation(ctoken, self.endpoint).await?),
|
||||
_ => None,
|
||||
})
|
||||
}
|
||||
|
||||
pub async fn extend(&mut self, query: RustyPipeQuery) -> Result<bool, Error> {
|
||||
match self.next(query).await {
|
||||
Ok(Some(paginator)) => {
|
||||
let mut items = paginator.items;
|
||||
self.items.append(&mut items);
|
||||
self.ctoken = paginator.ctoken;
|
||||
Ok(true)
|
||||
}
|
||||
Ok(None) => Ok(false),
|
||||
Err(e) => Err(e),
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn extend_pages(
|
||||
&mut self,
|
||||
query: RustyPipeQuery,
|
||||
n_pages: usize,
|
||||
) -> Result<(), Error> {
|
||||
for _ in 0..n_pages {
|
||||
match self.extend(query.clone()).await {
|
||||
Ok(false) => break,
|
||||
Err(e) => return Err(e),
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn extend_limit(
|
||||
&mut self,
|
||||
query: RustyPipeQuery,
|
||||
n_items: usize,
|
||||
) -> Result<(), Error> {
|
||||
while self.items.len() < n_items {
|
||||
match self.extend(query.clone()).await {
|
||||
Ok(false) => break,
|
||||
Err(e) => return Err(e),
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::{fs::File, io::BufReader, path::Path};
|
||||
|
||||
use rstest::rstest;
|
||||
|
||||
use crate::{
|
||||
client::{response, MapResponse},
|
||||
model::{Paginator, PlaylistItem, YouTubeItem},
|
||||
param::Language,
|
||||
serializer::MapResult,
|
||||
};
|
||||
|
||||
#[rstest]
|
||||
#[case("search", "search/cont")]
|
||||
fn map_continuation_items(#[case] name: &str, #[case] path: &str) {
|
||||
let filename = format!("testfiles/{}.json", path);
|
||||
let json_path = Path::new(&filename);
|
||||
let json_file = File::open(json_path).unwrap();
|
||||
|
||||
let items: response::Continuation =
|
||||
serde_json::from_reader(BufReader::new(json_file)).unwrap();
|
||||
let map_res: MapResult<Paginator<YouTubeItem>> =
|
||||
items.map_response("", Language::En, None).unwrap();
|
||||
|
||||
assert!(
|
||||
map_res.warnings.is_empty(),
|
||||
"deserialization/mapping warnings: {:?}",
|
||||
map_res.warnings
|
||||
);
|
||||
insta::assert_ron_snapshot!(format!("map_cont_{}", name), map_res.c, {
|
||||
".items.*.publish_date" => "[date]",
|
||||
});
|
||||
}
|
||||
|
||||
#[rstest]
|
||||
#[case("channel_playlists", "channel/channel_playlists_cont")]
|
||||
fn map_continuation_playlists(#[case] name: &str, #[case] path: &str) {
|
||||
let filename = format!("testfiles/{}.json", path);
|
||||
let json_path = Path::new(&filename);
|
||||
let json_file = File::open(json_path).unwrap();
|
||||
|
||||
let items: response::Continuation =
|
||||
serde_json::from_reader(BufReader::new(json_file)).unwrap();
|
||||
let map_res: MapResult<Paginator<PlaylistItem>> =
|
||||
items.map_response("", Language::En, None).unwrap();
|
||||
|
||||
assert!(
|
||||
map_res.warnings.is_empty(),
|
||||
"deserialization/mapping warnings: {:?}",
|
||||
map_res.warnings
|
||||
);
|
||||
insta::assert_ron_snapshot!(format!("map_cont_{}", name), map_res.c);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ use serde_with::serde_as;
|
|||
use serde_with::{DefaultOnError, VecSkipError};
|
||||
|
||||
use super::url_endpoint::NavigationEndpoint;
|
||||
use super::Thumbnails;
|
||||
use super::{Alert, ChannelBadge};
|
||||
use super::{ContentRenderer, ContentsRenderer, VideoListItem};
|
||||
use super::{ContentRenderer, ContentsRenderer};
|
||||
use super::{Thumbnails, YouTubeListItem};
|
||||
use crate::serializer::ignore_any;
|
||||
use crate::serializer::{text::Text, MapResult, VecLogError};
|
||||
|
||||
|
|
@ -83,7 +83,7 @@ pub struct SectionListRenderer {
|
|||
#[serde(rename_all = "camelCase")]
|
||||
pub struct RichGridRenderer {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
pub contents: MapResult<Vec<VideoListItem>>,
|
||||
pub contents: MapResult<Vec<YouTubeListItem>>,
|
||||
/// - **Videos**: browse-feedUC2DjFE7Xf11URZqWBigcVOQvideos (...)
|
||||
/// - **Playlists**: browse-feedUC2DjFE7Xf11URZqWBigcVOQplaylists104 (...)
|
||||
/// - **Info**: None
|
||||
|
|
@ -102,7 +102,7 @@ pub struct ItemSectionRendererWrap {
|
|||
pub enum ChannelContent {
|
||||
GridRenderer {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
items: MapResult<Vec<VideoListItem>>,
|
||||
items: MapResult<Vec<YouTubeListItem>>,
|
||||
},
|
||||
ChannelAboutFullMetadataRenderer(ChannelFullMetadata),
|
||||
#[default]
|
||||
|
|
@ -217,5 +217,5 @@ pub struct OnResponseReceivedAction {
|
|||
#[serde(rename_all = "camelCase")]
|
||||
pub struct AppendAction {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
pub continuation_items: MapResult<Vec<VideoListItem>>,
|
||||
pub continuation_items: MapResult<Vec<YouTubeListItem>>,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ pub mod search;
|
|||
pub mod trends;
|
||||
pub mod url_endpoint;
|
||||
pub mod video_details;
|
||||
pub mod video_item;
|
||||
|
||||
pub use channel::Channel;
|
||||
pub use channel::ChannelCont;
|
||||
|
|
@ -22,6 +23,8 @@ pub use url_endpoint::ResolvedUrl;
|
|||
pub use video_details::VideoComments;
|
||||
pub use video_details::VideoDetails;
|
||||
pub use video_details::VideoRecommendations;
|
||||
pub use video_item::YouTubeListItem;
|
||||
pub use video_item::YouTubeListMapper;
|
||||
|
||||
#[cfg(feature = "rss")]
|
||||
pub mod channel_rss;
|
||||
|
|
@ -488,6 +491,34 @@ pub struct ChildVideoRenderer {
|
|||
pub length_text: Option<String>,
|
||||
}
|
||||
|
||||
// CONTINUATION
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct Continuation {
|
||||
/// Number of search results
|
||||
#[serde_as(as = "Option<JsonString>")]
|
||||
pub estimated_results: Option<u64>,
|
||||
#[serde(alias = "onResponseReceivedCommands")]
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub on_response_received_actions: Vec<ContinuationActionWrap>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct ContinuationActionWrap {
|
||||
pub append_continuation_items_action: ContinuationAction,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct ContinuationAction {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
pub continuation_items: MapResult<Vec<YouTubeListItem>>,
|
||||
}
|
||||
|
||||
// YouTube Music
|
||||
|
||||
#[serde_as]
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ use serde_with::{serde_as, VecSkipError};
|
|||
use crate::serializer::ignore_any;
|
||||
use crate::serializer::{text::Text, MapResult, VecLogError};
|
||||
|
||||
use super::video_item::YouTubeListItem;
|
||||
use super::{
|
||||
ChannelRenderer, ContentsRenderer, ContinuationEndpoint, PlaylistRenderer, VideoRenderer,
|
||||
};
|
||||
|
|
@ -65,7 +66,7 @@ pub enum SectionListItem {
|
|||
#[serde(rename_all = "camelCase")]
|
||||
ItemSectionRenderer {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
contents: MapResult<Vec<SearchItem>>,
|
||||
contents: MapResult<Vec<YouTubeListItem>>,
|
||||
},
|
||||
/// Continuation token to fetch more search results
|
||||
#[serde(rename_all = "camelCase")]
|
||||
|
|
|
|||
406
src/client/response/video_item.rs
Normal file
406
src/client/response/video_item.rs
Normal file
|
|
@ -0,0 +1,406 @@
|
|||
use chrono::TimeZone;
|
||||
use serde::Deserialize;
|
||||
use serde_with::{json::JsonString, serde_as, VecSkipError};
|
||||
|
||||
use super::{
|
||||
ChannelBadge, ChannelThumbnailSupportedRenderers, ContinuationEndpoint,
|
||||
DetailedMetadataSnippet, IsLive, IsShort, Thumbnails, TimeOverlay, UpcomingEventData,
|
||||
VideoBadge,
|
||||
};
|
||||
use crate::{
|
||||
model::{ChannelId, ChannelItem, ChannelTag, PlaylistItem, VideoItem, YouTubeItem},
|
||||
param::Language,
|
||||
serializer::{
|
||||
ignore_any,
|
||||
text::{Text, TextComponent},
|
||||
MapResult, VecLogError,
|
||||
},
|
||||
timeago,
|
||||
util::{self, TryRemove},
|
||||
};
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub enum YouTubeListItem {
|
||||
#[serde(alias = "gridVideoRenderer", alias = "compactVideoRenderer")]
|
||||
VideoRenderer(VideoRenderer),
|
||||
|
||||
#[serde(alias = "gridPlaylistRenderer")]
|
||||
PlaylistRenderer(PlaylistRenderer),
|
||||
|
||||
ChannelRenderer(ChannelRenderer),
|
||||
|
||||
/// Continauation items are located at the end of a list
|
||||
/// and contain the continuation token for progressive loading
|
||||
#[serde(rename_all = "camelCase")]
|
||||
ContinuationItemRenderer {
|
||||
continuation_endpoint: ContinuationEndpoint,
|
||||
},
|
||||
|
||||
/// Corrected search query
|
||||
#[serde(rename_all = "camelCase")]
|
||||
ShowingResultsForRenderer {
|
||||
#[serde_as(as = "Text")]
|
||||
corrected_query: String,
|
||||
},
|
||||
|
||||
/// Contains video on startpage
|
||||
///
|
||||
/// Seems to be currently A/B tested on the channel page,
|
||||
/// as of 11.10.2022
|
||||
RichItemRenderer {
|
||||
content: Box<YouTubeListItem>,
|
||||
},
|
||||
|
||||
/// Contains search results
|
||||
///
|
||||
/// Seems to be currently A/B tested on the video details page,
|
||||
/// as of 11.10.2022
|
||||
ItemSectionRenderer {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
contents: MapResult<Vec<YouTubeListItem>>,
|
||||
},
|
||||
|
||||
/// No video list item (e.g. ad) or unimplemented item
|
||||
///
|
||||
/// Unimplemented:
|
||||
/// - compactPlaylistRenderer (recommended playlists)
|
||||
/// - compactRadioRenderer (recommended mix)
|
||||
#[serde(other, deserialize_with = "ignore_any")]
|
||||
None,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct VideoRenderer {
|
||||
pub video_id: String,
|
||||
pub thumbnail: Thumbnails,
|
||||
#[serde_as(as = "Text")]
|
||||
pub title: String,
|
||||
#[serde(rename = "shortBylineText")]
|
||||
pub channel: Option<TextComponent>,
|
||||
pub channel_thumbnail_supported_renderers: Option<ChannelThumbnailSupportedRenderers>,
|
||||
#[serde_as(as = "Option<Text>")]
|
||||
pub published_time_text: Option<String>,
|
||||
#[serde_as(as = "Option<Text>")]
|
||||
pub length_text: Option<String>,
|
||||
/// Contains `No views` if the view count is zero
|
||||
#[serde_as(as = "Option<Text>")]
|
||||
pub view_count_text: Option<String>,
|
||||
/// Channel verification badge
|
||||
#[serde(default)]
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub owner_badges: Vec<ChannelBadge>,
|
||||
/// Contains live tag for recommended videos
|
||||
#[serde(default)]
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub badges: Vec<VideoBadge>,
|
||||
/// Contains Short/Live tag
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub thumbnail_overlays: Vec<TimeOverlay>,
|
||||
/// Abbreviated video description (on startpage)
|
||||
#[serde_as(as = "Option<Text>")]
|
||||
pub description_snippet: Option<String>,
|
||||
/// Contains abbreviated video description (on search page)
|
||||
#[serde_as(as = "Option<VecSkipError<_>>")]
|
||||
pub detailed_metadata_snippets: Option<Vec<DetailedMetadataSnippet>>,
|
||||
/// Release date for upcoming videos
|
||||
pub upcoming_event_data: Option<UpcomingEventData>,
|
||||
}
|
||||
|
||||
/// Playlist displayed in search results
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct PlaylistRenderer {
|
||||
pub playlist_id: String,
|
||||
#[serde_as(as = "Text")]
|
||||
pub title: String,
|
||||
pub thumbnail: Option<Thumbnails>,
|
||||
/// Used by playlists from search page
|
||||
///
|
||||
/// The first item of this list contains the playlist thumbnail,
|
||||
/// subsequent items contain very small thumbnails of the next playlist videos
|
||||
pub thumbnails: Option<Vec<Thumbnails>>,
|
||||
#[serde_as(as = "Option<JsonString>")]
|
||||
pub video_count: Option<u64>,
|
||||
#[serde_as(as = "Option<Text>")]
|
||||
pub video_count_short_text: Option<String>,
|
||||
#[serde(rename = "shortBylineText")]
|
||||
pub channel: Option<TextComponent>,
|
||||
/// Channel verification badge
|
||||
#[serde(default)]
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub owner_badges: Vec<ChannelBadge>,
|
||||
}
|
||||
|
||||
/// Channel displayed in search results
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct ChannelRenderer {
|
||||
pub channel_id: String,
|
||||
#[serde_as(as = "Text")]
|
||||
pub title: String,
|
||||
pub thumbnail: Thumbnails,
|
||||
/// Abbreviated channel description
|
||||
///
|
||||
/// Not present if the channel has no description
|
||||
#[serde(default)]
|
||||
#[serde_as(as = "Text")]
|
||||
pub description_snippet: String,
|
||||
/// Not present if the channel has no videos
|
||||
#[serde_as(as = "Option<Text>")]
|
||||
pub video_count_text: Option<String>,
|
||||
#[serde_as(as = "Option<Text>")]
|
||||
pub subscriber_count_text: Option<String>,
|
||||
/// Channel verification badge
|
||||
#[serde(default)]
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub owner_badges: Vec<ChannelBadge>,
|
||||
}
|
||||
|
||||
/// Result of mapping a list of different YouTube enities
|
||||
/// (videos, channels, playlists)
|
||||
#[derive(Debug)]
|
||||
pub struct YouTubeListMapper<T> {
|
||||
lang: Language,
|
||||
pub items: Vec<T>,
|
||||
pub warnings: Vec<String>,
|
||||
pub ctoken: Option<String>,
|
||||
pub corrected_query: Option<String>,
|
||||
}
|
||||
|
||||
impl<T> YouTubeListMapper<T> {
|
||||
pub fn new(lang: Language) -> Self {
|
||||
Self {
|
||||
lang,
|
||||
items: Vec::new(),
|
||||
warnings: Vec::new(),
|
||||
ctoken: None,
|
||||
corrected_query: None,
|
||||
}
|
||||
}
|
||||
|
||||
fn map_video(&self, video: VideoRenderer) -> VideoItem {
|
||||
let mut tn_overlays = video.thumbnail_overlays;
|
||||
let length_text = video.length_text.or_else(|| {
|
||||
tn_overlays
|
||||
.try_swap_remove(0)
|
||||
.map(|overlay| overlay.thumbnail_overlay_time_status_renderer.text)
|
||||
});
|
||||
|
||||
VideoItem {
|
||||
id: video.video_id,
|
||||
title: video.title,
|
||||
length: length_text.and_then(|txt| util::parse_video_length(&txt)),
|
||||
thumbnail: video.thumbnail.into(),
|
||||
channel: video.channel.and_then(|c| {
|
||||
ChannelId::try_from(c).ok().map(|c| ChannelTag {
|
||||
id: c.id,
|
||||
name: c.name,
|
||||
avatar: video
|
||||
.channel_thumbnail_supported_renderers
|
||||
.map(|tn| tn.channel_thumbnail_with_link_renderer.thumbnail.into())
|
||||
.unwrap_or_default(),
|
||||
verification: video.owner_badges.into(),
|
||||
subscriber_count: None,
|
||||
})
|
||||
}),
|
||||
publish_date: video
|
||||
.upcoming_event_data
|
||||
.as_ref()
|
||||
.map(|upc| {
|
||||
chrono::Local.from_utc_datetime(&chrono::NaiveDateTime::from_timestamp(
|
||||
upc.start_time,
|
||||
0,
|
||||
))
|
||||
})
|
||||
.or_else(|| {
|
||||
video
|
||||
.published_time_text
|
||||
.as_ref()
|
||||
.and_then(|txt| timeago::parse_timeago_to_dt(self.lang, txt))
|
||||
}),
|
||||
publish_date_txt: video.published_time_text,
|
||||
view_count: video
|
||||
.view_count_text
|
||||
.map(|txt| util::parse_numeric(&txt).unwrap_or_default()),
|
||||
is_live: tn_overlays.is_live() || video.badges.is_live(),
|
||||
is_short: tn_overlays.is_short(),
|
||||
is_upcoming: video.upcoming_event_data.is_some(),
|
||||
short_description: video
|
||||
.detailed_metadata_snippets
|
||||
.and_then(|mut snippets| snippets.try_swap_remove(0).map(|s| s.snippet_text))
|
||||
.or(video.description_snippet),
|
||||
}
|
||||
}
|
||||
|
||||
fn map_playlist(playlist: PlaylistRenderer) -> PlaylistItem {
|
||||
PlaylistItem {
|
||||
id: playlist.playlist_id,
|
||||
name: playlist.title,
|
||||
thumbnail: playlist
|
||||
.thumbnail
|
||||
.or_else(|| playlist.thumbnails.and_then(|mut t| t.try_swap_remove(0)))
|
||||
.unwrap_or_default()
|
||||
.into(),
|
||||
channel: playlist.channel.and_then(|c| {
|
||||
ChannelId::try_from(c).ok().map(|c| ChannelTag {
|
||||
id: c.id,
|
||||
name: c.name,
|
||||
avatar: Vec::new(),
|
||||
verification: playlist.owner_badges.into(),
|
||||
subscriber_count: None,
|
||||
})
|
||||
}),
|
||||
video_count: playlist.video_count.or_else(|| {
|
||||
playlist
|
||||
.video_count_short_text
|
||||
.and_then(|txt| util::parse_numeric(&txt).ok())
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
fn map_channel(channel: ChannelRenderer) -> ChannelItem {
|
||||
ChannelItem {
|
||||
id: channel.channel_id,
|
||||
name: channel.title,
|
||||
avatar: channel.thumbnail.into(),
|
||||
verification: channel.owner_badges.into(),
|
||||
subscriber_count: channel
|
||||
.subscriber_count_text
|
||||
.and_then(|txt| util::parse_numeric(&txt).ok()),
|
||||
video_count: channel
|
||||
.video_count_text
|
||||
.and_then(|txt| util::parse_numeric(&txt).ok())
|
||||
.unwrap_or_default(),
|
||||
short_description: channel.description_snippet,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl YouTubeListMapper<YouTubeItem> {
|
||||
fn map_item(&mut self, item: YouTubeListItem) {
|
||||
match item {
|
||||
YouTubeListItem::VideoRenderer(video) => {
|
||||
self.items.push(YouTubeItem::Video(self.map_video(video)));
|
||||
}
|
||||
YouTubeListItem::PlaylistRenderer(playlist) => self
|
||||
.items
|
||||
.push(YouTubeItem::Playlist(Self::map_playlist(playlist))),
|
||||
YouTubeListItem::ChannelRenderer(channel) => {
|
||||
self.items
|
||||
.push(YouTubeItem::Channel(Self::map_channel(channel)));
|
||||
}
|
||||
YouTubeListItem::ContinuationItemRenderer {
|
||||
continuation_endpoint,
|
||||
} => self.ctoken = Some(continuation_endpoint.continuation_command.token),
|
||||
YouTubeListItem::ShowingResultsForRenderer { corrected_query } => {
|
||||
self.corrected_query = Some(corrected_query);
|
||||
}
|
||||
YouTubeListItem::RichItemRenderer { content } => {
|
||||
self.map_item(*content);
|
||||
}
|
||||
YouTubeListItem::ItemSectionRenderer { mut contents } => {
|
||||
self.warnings.append(&mut contents.warnings);
|
||||
contents.c.into_iter().for_each(|it| self.map_item(it));
|
||||
}
|
||||
YouTubeListItem::None => {}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn map_response(&mut self, mut res: MapResult<Vec<YouTubeListItem>>) {
|
||||
self.warnings.append(&mut res.warnings);
|
||||
res.c.into_iter().for_each(|item| self.map_item(item));
|
||||
}
|
||||
}
|
||||
|
||||
impl YouTubeListMapper<VideoItem> {
|
||||
fn map_item(&mut self, item: YouTubeListItem) {
|
||||
match item {
|
||||
YouTubeListItem::VideoRenderer(video) => {
|
||||
self.items.push(self.map_video(video));
|
||||
}
|
||||
YouTubeListItem::ContinuationItemRenderer {
|
||||
continuation_endpoint,
|
||||
} => self.ctoken = Some(continuation_endpoint.continuation_command.token),
|
||||
YouTubeListItem::ShowingResultsForRenderer { corrected_query } => {
|
||||
self.corrected_query = Some(corrected_query);
|
||||
}
|
||||
YouTubeListItem::RichItemRenderer { content } => {
|
||||
self.map_item(*content);
|
||||
}
|
||||
YouTubeListItem::ItemSectionRenderer { mut contents } => {
|
||||
self.warnings.append(&mut contents.warnings);
|
||||
contents.c.into_iter().for_each(|it| self.map_item(it));
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn map_response(&mut self, mut res: MapResult<Vec<YouTubeListItem>>) {
|
||||
self.warnings.append(&mut res.warnings);
|
||||
res.c.into_iter().for_each(|item| self.map_item(item));
|
||||
}
|
||||
}
|
||||
|
||||
impl YouTubeListMapper<PlaylistItem> {
|
||||
fn map_item(&mut self, item: YouTubeListItem) {
|
||||
match item {
|
||||
YouTubeListItem::PlaylistRenderer(playlist) => {
|
||||
self.items.push(Self::map_playlist(playlist))
|
||||
}
|
||||
YouTubeListItem::ContinuationItemRenderer {
|
||||
continuation_endpoint,
|
||||
} => self.ctoken = Some(continuation_endpoint.continuation_command.token),
|
||||
YouTubeListItem::ShowingResultsForRenderer { corrected_query } => {
|
||||
self.corrected_query = Some(corrected_query);
|
||||
}
|
||||
YouTubeListItem::RichItemRenderer { content } => {
|
||||
self.map_item(*content);
|
||||
}
|
||||
YouTubeListItem::ItemSectionRenderer { mut contents } => {
|
||||
self.warnings.append(&mut contents.warnings);
|
||||
contents.c.into_iter().for_each(|it| self.map_item(it));
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn map_response(&mut self, mut res: MapResult<Vec<YouTubeListItem>>) {
|
||||
self.warnings.append(&mut res.warnings);
|
||||
res.c.into_iter().for_each(|item| self.map_item(item));
|
||||
}
|
||||
}
|
||||
|
||||
impl YouTubeListMapper<ChannelItem> {
|
||||
fn map_item(&mut self, item: YouTubeListItem) {
|
||||
match item {
|
||||
YouTubeListItem::ChannelRenderer(channel) => {
|
||||
self.items.push(Self::map_channel(channel));
|
||||
}
|
||||
YouTubeListItem::ContinuationItemRenderer {
|
||||
continuation_endpoint,
|
||||
} => self.ctoken = Some(continuation_endpoint.continuation_command.token),
|
||||
YouTubeListItem::ShowingResultsForRenderer { corrected_query } => {
|
||||
self.corrected_query = Some(corrected_query);
|
||||
}
|
||||
YouTubeListItem::RichItemRenderer { content } => {
|
||||
self.map_item(*content);
|
||||
}
|
||||
YouTubeListItem::ItemSectionRenderer { mut contents } => {
|
||||
self.warnings.append(&mut contents.warnings);
|
||||
contents.c.into_iter().for_each(|it| self.map_item(it));
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn map_response(&mut self, mut res: MapResult<Vec<YouTubeListItem>>) {
|
||||
self.warnings.append(&mut res.warnings);
|
||||
res.c.into_iter().for_each(|item| self.map_item(item));
|
||||
}
|
||||
}
|
||||
|
|
@ -3,15 +3,11 @@ use serde::{de::IgnoredAny, Serialize};
|
|||
use crate::{
|
||||
deobfuscate::Deobfuscator,
|
||||
error::{Error, ExtractionError},
|
||||
model::{Paginator, SearchItem, SearchResult, SearchVideo},
|
||||
model::{Paginator, SearchResult, YouTubeItem},
|
||||
param::{search_filter::SearchFilter, Language},
|
||||
util::TryRemove,
|
||||
};
|
||||
|
||||
use super::{
|
||||
response::{self, TryFromWLang},
|
||||
ClientType, MapResponse, MapResult, QContinuation, RustyPipeQuery, YTContext,
|
||||
};
|
||||
use super::{response, ClientType, MapResponse, MapResult, RustyPipeQuery, YTContext};
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
|
|
@ -63,23 +59,6 @@ impl RustyPipeQuery {
|
|||
.await
|
||||
}
|
||||
|
||||
pub async fn search_continuation(self, ctoken: &str) -> Result<Paginator<SearchItem>, Error> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
let request_body = QContinuation {
|
||||
context,
|
||||
continuation: ctoken,
|
||||
};
|
||||
|
||||
self.execute_request::<response::SearchCont, _, _>(
|
||||
ClientType::Desktop,
|
||||
"search_continuation",
|
||||
ctoken,
|
||||
"search",
|
||||
&request_body,
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn search_suggestion(self, query: &str) -> Result<Vec<String>, Error> {
|
||||
let url = url::Url::parse_with_params("https://suggestqueries-clients6.youtube.com/complete/search?client=youtube&gs_rn=64&gs_ri=youtube&ds=yt&cp=1&gs_id=4&xhr=t&xssi=t",
|
||||
&[("hl", self.opts.lang.to_string()), ("gl", self.opts.country.to_string()), ("q", query.to_string())]
|
||||
|
|
@ -123,55 +102,22 @@ impl MapResponse<SearchResult> for response::Search {
|
|||
|
||||
let (items, ctoken) = map_section_list_items(section_list_items)?;
|
||||
|
||||
let mut warnings = items.warnings;
|
||||
let (mut mapped, corrected_query) = map_search_items(items.c, lang);
|
||||
warnings.append(&mut mapped.warnings);
|
||||
let mut mapper = response::YouTubeListMapper::<YouTubeItem>::new(lang);
|
||||
mapper.map_response(items);
|
||||
|
||||
Ok(MapResult {
|
||||
c: SearchResult {
|
||||
items: Paginator::new(self.estimated_results, mapped.c, ctoken),
|
||||
corrected_query,
|
||||
items: Paginator::new(self.estimated_results, mapper.items, ctoken),
|
||||
corrected_query: mapper.corrected_query,
|
||||
},
|
||||
warnings,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl MapResponse<Paginator<SearchItem>> for response::SearchCont {
|
||||
fn map_response(
|
||||
self,
|
||||
_id: &str,
|
||||
lang: Language,
|
||||
_deobf: Option<&Deobfuscator>,
|
||||
) -> Result<MapResult<Paginator<SearchItem>>, ExtractionError> {
|
||||
let mut commands = self.on_response_received_commands;
|
||||
let cont_command = some_or_bail!(
|
||||
commands.try_swap_remove(0),
|
||||
Err(ExtractionError::InvalidData(
|
||||
"no item section renderer".into()
|
||||
))
|
||||
);
|
||||
|
||||
let (items, ctoken) = map_section_list_items(
|
||||
cont_command
|
||||
.append_continuation_items_action
|
||||
.continuation_items,
|
||||
)?;
|
||||
|
||||
let mut warnings = items.warnings;
|
||||
let (mut mapped, _) = map_search_items(items.c, lang);
|
||||
warnings.append(&mut mapped.warnings);
|
||||
|
||||
Ok(MapResult {
|
||||
c: Paginator::new(self.estimated_results, mapped.c, ctoken),
|
||||
warnings,
|
||||
warnings: mapper.warnings,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fn map_section_list_items(
|
||||
section_list_items: Vec<response::search::SectionListItem>,
|
||||
) -> Result<(MapResult<Vec<response::search::SearchItem>>, Option<String>), ExtractionError> {
|
||||
) -> Result<(MapResult<Vec<response::YouTubeListItem>>, Option<String>), ExtractionError> {
|
||||
let mut items = None;
|
||||
let mut ctoken = None;
|
||||
section_list_items.into_iter().for_each(|item| match item {
|
||||
|
|
@ -195,54 +141,13 @@ fn map_section_list_items(
|
|||
Ok((items, ctoken))
|
||||
}
|
||||
|
||||
fn map_search_items(
|
||||
items: Vec<response::search::SearchItem>,
|
||||
lang: Language,
|
||||
) -> (MapResult<Vec<SearchItem>>, Option<String>) {
|
||||
let mut warnings = Vec::new();
|
||||
|
||||
let mut c_query = None;
|
||||
let mapped_items = items
|
||||
.into_iter()
|
||||
.filter_map(|item| match item {
|
||||
response::search::SearchItem::VideoRenderer(video) => {
|
||||
match SearchVideo::from_w_lang(video, lang) {
|
||||
Ok(video) => Some(SearchItem::Video(video)),
|
||||
Err(e) => {
|
||||
warnings.push(e.to_string());
|
||||
None
|
||||
}
|
||||
}
|
||||
}
|
||||
response::search::SearchItem::PlaylistRenderer(playlist) => {
|
||||
Some(SearchItem::Playlist(playlist.into()))
|
||||
}
|
||||
response::search::SearchItem::ChannelRenderer(channel) => {
|
||||
Some(SearchItem::Channel(channel.into()))
|
||||
}
|
||||
response::search::SearchItem::ShowingResultsForRenderer { corrected_query } => {
|
||||
c_query = Some(corrected_query);
|
||||
None
|
||||
}
|
||||
response::search::SearchItem::None => None,
|
||||
})
|
||||
.collect();
|
||||
(
|
||||
MapResult {
|
||||
c: mapped_items,
|
||||
warnings,
|
||||
},
|
||||
c_query,
|
||||
)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::{fs::File, io::BufReader, path::Path};
|
||||
|
||||
use crate::{
|
||||
client::{response, MapResponse},
|
||||
model::{Paginator, SearchItem, SearchResult},
|
||||
model::SearchResult,
|
||||
param::Language,
|
||||
serializer::MapResult,
|
||||
};
|
||||
|
|
@ -271,26 +176,4 @@ mod tests {
|
|||
".items.items.*.publish_date" => "[date]",
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn t_map_search_cont() {
|
||||
let filename = format!("testfiles/search/cont.json");
|
||||
let json_path = Path::new(&filename);
|
||||
let json_file = File::open(json_path).unwrap();
|
||||
|
||||
let search_cont: response::SearchCont =
|
||||
serde_json::from_reader(BufReader::new(json_file)).unwrap();
|
||||
let map_res: MapResult<Paginator<SearchItem>> =
|
||||
search_cont.map_response("", Language::En, None).unwrap();
|
||||
|
||||
assert!(
|
||||
map_res.warnings.is_empty(),
|
||||
"deserialization/mapping warnings: {:?}",
|
||||
map_res.warnings
|
||||
);
|
||||
|
||||
insta::assert_ron_snapshot!("map_search_cont", map_res.c, {
|
||||
".items.*.publish_date" => "[date]",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ Channel(
|
|||
content: Paginator(
|
||||
count: None,
|
||||
items: [
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHtOV3AEwhuea4TnviddKfAj",
|
||||
name: "MacGyver Project",
|
||||
thumbnail: [
|
||||
|
|
@ -154,9 +154,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHuvHE5GQrQJxWXHdmW2l5IF",
|
||||
name: "Calculators",
|
||||
thumbnail: [
|
||||
|
|
@ -166,9 +167,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHs6wRwVSaErU0BEnLiHfnKJ",
|
||||
name: "BM235",
|
||||
thumbnail: [
|
||||
|
|
@ -178,9 +180,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(9),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHu4k0ZkKFLsysSB5iava6Qu",
|
||||
name: "Vibration Measurement",
|
||||
thumbnail: [
|
||||
|
|
@ -190,9 +193,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHtdQF-m5UFZ5GEjABadI3kI",
|
||||
name: "Component Selection",
|
||||
thumbnail: [
|
||||
|
|
@ -202,9 +206,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(4),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHtlndPUSOPgsujUdq1c5Mr9",
|
||||
name: "Solar Roadways",
|
||||
thumbnail: [
|
||||
|
|
@ -214,9 +219,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(18),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvD6M_7WeN071OVsZFE0_q-",
|
||||
name: "Electronics Tutorials - AC Theory Series",
|
||||
thumbnail: [
|
||||
|
|
@ -226,9 +232,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(3),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK",
|
||||
name: "Electronics Tutorial - DC Fundamentals",
|
||||
thumbnail: [
|
||||
|
|
@ -238,9 +245,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(8),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvIDfW3x2p4BY6l4RYgfBJE",
|
||||
name: "Oscilloscope Probing",
|
||||
thumbnail: [
|
||||
|
|
@ -250,9 +258,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(13),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHu6Jjb8U82eKQfvKhJVl0Bu",
|
||||
name: "Thermal Design",
|
||||
thumbnail: [
|
||||
|
|
@ -262,9 +271,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(9),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHs-X2Awg33PCBNrP2BGFVhC",
|
||||
name: "Electric Cars",
|
||||
thumbnail: [
|
||||
|
|
@ -274,9 +284,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(7),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHuLODLTeq3PM-OJRP2nzNUa",
|
||||
name: "Designing a better uCurrent",
|
||||
thumbnail: [
|
||||
|
|
@ -286,9 +297,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(3),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHtvTKP4RTNW1-08Kmzy1pvA",
|
||||
name: "EMC Compliance & Measurement",
|
||||
thumbnail: [
|
||||
|
|
@ -298,9 +310,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(8),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHuUTpCrTVX7BdU68l2aVqMv",
|
||||
name: "Power Counter Display Project",
|
||||
thumbnail: [
|
||||
|
|
@ -310,9 +323,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvm120Tq40nKrM5SUBlolN3",
|
||||
name: "Live - Ask Dave",
|
||||
thumbnail: [
|
||||
|
|
@ -322,9 +336,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(3),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHsiF93KOLoF1KAHArmIW9lC",
|
||||
name: "Padauk Microcontroller",
|
||||
thumbnail: [
|
||||
|
|
@ -334,9 +349,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(10),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvxTzBLwUFw4My4rtrNFzED",
|
||||
name: "Other Debunking Videos",
|
||||
thumbnail: [
|
||||
|
|
@ -346,9 +362,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHt2pJ7X5tumuM4Wa3r1OC7Q",
|
||||
name: "Audio & Speakers",
|
||||
thumbnail: [
|
||||
|
|
@ -358,9 +375,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(9),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHtX7OearWdmqGzqiu4DHKWi",
|
||||
name: "Cameras",
|
||||
thumbnail: [
|
||||
|
|
@ -370,9 +388,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(16),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHu-TaNRp27_PiXjBG5wY9Gv",
|
||||
name: "Cryptocurrency",
|
||||
thumbnail: [
|
||||
|
|
@ -382,9 +401,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(7),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvmK-VGcZ33ZuATmcNB8tvH",
|
||||
name: "LCD Tutorial",
|
||||
thumbnail: [
|
||||
|
|
@ -394,9 +414,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(6),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvbV8x_bWQBKEg4IshWjG3U",
|
||||
name: "Guest Videos",
|
||||
thumbnail: [
|
||||
|
|
@ -406,9 +427,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(12),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHs5tuhiqdxQeegsLDP7TM8V",
|
||||
name: "Software Development",
|
||||
thumbnail: [
|
||||
|
|
@ -418,9 +440,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHu328BlpUOUDsv9Kf1Ri8Tg",
|
||||
name: "John Kenny - Keysight",
|
||||
thumbnail: [
|
||||
|
|
@ -430,9 +453,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(5),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvj_E5KUBluJJupXmideiZk",
|
||||
name: "General Tech Information",
|
||||
thumbnail: [
|
||||
|
|
@ -442,9 +466,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHsWHPg1KlSd8agKbrcn3Dwn",
|
||||
name: "Microscope",
|
||||
thumbnail: [
|
||||
|
|
@ -454,9 +479,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(4),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHuQb5djEVLzwBSTT27p2dXB",
|
||||
name: "The Signal Path",
|
||||
thumbnail: [
|
||||
|
|
@ -466,9 +492,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHstMIbtLqlEiidVjj8ob0xp",
|
||||
name: "Thermal Imaging",
|
||||
thumbnail: [
|
||||
|
|
@ -478,9 +505,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHugqRHdt46SN9Bmoh-D5Gp2",
|
||||
name: "EEVacademy",
|
||||
thumbnail: [
|
||||
|
|
@ -490,9 +518,10 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(9),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHtqqYM7ON99sbyiokMKrwwI",
|
||||
name: "Brainstorming",
|
||||
thumbnail: [
|
||||
|
|
@ -502,9 +531,11 @@ Channel(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(1),
|
||||
),
|
||||
],
|
||||
ctoken: Some("4qmFsgLCARIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGnRFZ2x3YkdGNWJHbHpkSE1ZQXlBQk1BRTRBZW9EUEVOblRrUlJhbEZUU2tKSmFWVkZlREpVTW5oVVdsZG9UMlJJVmtsa1NFWjRWMVV3TTFRd05EVlBXRTVwWlZkc2RtRXdNVXhqYm1RelUxTm5PQSUzRCUzRJoCL2Jyb3dzZS1mZWVkVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RcGxheWxpc3RzMTA0"),
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ Channel(
|
|||
content: Paginator(
|
||||
count: None,
|
||||
items: [
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "EIcmfSzeaKk",
|
||||
title: "our new normal",
|
||||
length: Some(1106),
|
||||
|
|
@ -141,14 +141,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("9 hours ago"),
|
||||
view_count: 142423,
|
||||
view_count: Some(142423),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("I\'ve been really enjoying cooking more lately (′ꈍωꈍ‵)\nWas so cool to see my makgeolli fermenting, I can\'t wait to show you the progress update in my next vlog. \n\nThank you again doobies!..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "9NuhKCv3crg",
|
||||
title: "the end.",
|
||||
length: Some(982),
|
||||
|
|
@ -174,14 +176,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 days ago"),
|
||||
view_count: 989763,
|
||||
view_count: Some(989763),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("or the start of something new~~~~~\n\nThank you for your patience on the vlog, it took some time to adjust to my new normal. Excited for change and I\'ll always try my best to make the best content..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "38Gd6TdmNVs",
|
||||
title: "KOREAN BARBECUE l doob gourmand ep.3",
|
||||
length: Some(525),
|
||||
|
|
@ -207,14 +211,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 weeks ago"),
|
||||
view_count: 355470,
|
||||
view_count: Some(355470),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("I haven\'t done a doob gourmand series in so so long! I hope you enjoyed it, let me know what kind of food you\'re interested in seeing in these series! :)\n\nLove you doobies!\n\nInstagram @doobydobap..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "l9TiwunjzgA",
|
||||
title: "long distance",
|
||||
length: Some(1043),
|
||||
|
|
@ -240,14 +246,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 weeks ago"),
|
||||
view_count: 697188,
|
||||
view_count: Some(697188),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("exciting changes are about to come! \ndoob gourmand kbbq coming out on Thursday this week :)\n\nInstagram @doobydobap \nJoin my discord! 😈\nhttps://discord.gg/doobyverse\nwww.doobydobap.com for..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "pRVSdUxdsVw",
|
||||
title: "Repairing...",
|
||||
length: Some(965),
|
||||
|
|
@ -273,14 +281,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 weeks ago"),
|
||||
view_count: 529586,
|
||||
view_count: Some(529586),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("The word repair stems from the Latin word reparare, from re- ‘back’ and parare ‘make ready.\' And I feel that\'s exactly how I feel about this week\'s vlog-- I feel like I\'m repairing my..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "2FJVhdOO0F0",
|
||||
title: "a health scare",
|
||||
length: Some(1238),
|
||||
|
|
@ -306,14 +316,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 1066729,
|
||||
view_count: Some(1066729),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("https://www.nationalbreastcancer.org/about-breast-cancer/\nI\'m really thankful that my results came out okay. This really was one of the worst / scariest weeks of my life, but an important one..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "CutR_1SDDzY",
|
||||
title: "feels good to be back",
|
||||
length: Some(1159),
|
||||
|
|
@ -339,14 +351,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 525663,
|
||||
view_count: Some(525663),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("I missed you guys. Happy to see you guys back. \nI\'ve really been working on my mental health, educating myself with different food cultures, and focusing on being happy the last month. \nThank..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "KUz7oArksR4",
|
||||
title: "running away",
|
||||
length: Some(1023),
|
||||
|
|
@ -372,14 +386,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 717806,
|
||||
view_count: Some(717806),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("for now... more adventures to come! \n\n\n\n\nMusic by Mark Generous - A Summer Day - https://thmatc.co/?l=CF6C5FFF\nInstagram @doobydobap \nJoin my discord! 😈\nhttps://discord.gg/doobyverse\nwww.doobyd..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "sPb2gyN-hnE",
|
||||
title: "worth fighting for",
|
||||
length: Some(1232),
|
||||
|
|
@ -405,14 +421,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 624673,
|
||||
view_count: Some(624673),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Please be respectful in the comments section! \nI will not be tolerating any hateful/derogatory speech 👹👹👹 *barking noise*\n\nMusic \nMarie - Howard Harper-Barnes\nMusic by Monét Ngo -..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "PXsK9-CFoH4",
|
||||
title: "waiting...",
|
||||
length: Some(1455),
|
||||
|
|
@ -438,14 +456,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 924135,
|
||||
view_count: Some(924135),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("👀☂\u{fe0f}🕴\u{fe0f}\ntuna kimchi jook \n2 cups cooked rice \n3 cups water \n1 cup kimchi \n320g canned tuna \n1 tbsp perilla seed oil \n1 onion\n1 tbsp gochujang\n1 tbsp soy sauce \n½ tsp salt (to taste)..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "r2ye6zW0nbM",
|
||||
title: "a wedding",
|
||||
length: Some(1207),
|
||||
|
|
@ -471,14 +491,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 1053353,
|
||||
view_count: Some(1053353),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Ginger Pork Recipe!\nhttps://doobydobap.com/recipe/ginger-pork-shogayaki\n-\nInstagram @doobydobap \nJoin my discord! 😈\nhttps://discord.gg/doobyverse\nwww.doobydobap.com for recipes & stories..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "rriwHj8U664",
|
||||
title: "my seoul apartment tour",
|
||||
length: Some(721),
|
||||
|
|
@ -504,14 +526,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 697242,
|
||||
view_count: Some(697242),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Korea has an interesting rent structure called junseh where you pay a higher security deposit in turn for lower rent! And before anyone starts accusing me, no, it\'s all with my own money!!!..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "FKJtrUeol3o",
|
||||
title: "with quantity comes quality",
|
||||
length: Some(1140),
|
||||
|
|
@ -537,14 +561,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 1086097,
|
||||
view_count: Some(1086097),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("A busy, but calm week for me here in Seoul living alone. \nPlanning on exploring more parts of Korea, please let me know in the comments what you\'d wanna see!\n\nFried Eggplants with Doubanjiang..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "zYHB38UlzE0",
|
||||
title: "Q&A l relationships, burnout, privilege, college advice, living alone, and life after youtube?",
|
||||
length: Some(775),
|
||||
|
|
@ -570,14 +596,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 528979,
|
||||
view_count: Some(528979),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("So many questions I wasn\'t able to answer, but if you comment below I\'ll try and answer every single one of them!!!!\n\nA little bit of audio issues, it was my first time using this mic, \nsowwy..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "hGbQ2WM9nOo",
|
||||
title: "Why does everything bad for you taste good ㅣ CHILI OIL RAMEN",
|
||||
length: Some(428),
|
||||
|
|
@ -603,14 +631,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 1036890,
|
||||
view_count: Some(1036890),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("https://partner.bokksu.com/doobydobap use code DOOBYDOBAP to get $15 off your first bokksu order! \n\nInstagram @doobydobap \nJoin my discord! 😈\nhttps://discord.gg/doobyverse\nwww.doobydobap.com..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "PxGmP4v_A38",
|
||||
title: "Alone and Thriving l late night korean convenience store, muji kitchenware haul, spring cleaning!",
|
||||
length: Some(1437),
|
||||
|
|
@ -636,14 +666,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 832542,
|
||||
view_count: Some(832542),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("I could palpably feel how I\'m so much happier than before when I was reviewing my footage 🥺🥺🥺 \n\nAll the finalized recipes will be updated on my Instagram or my website! \n\nMusic\nMusic..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "8t-WyYcpEDE",
|
||||
title: "What I hate most",
|
||||
length: Some(61),
|
||||
|
|
@ -669,14 +701,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 1342882,
|
||||
view_count: Some(1342882),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("#shorts #cooking \nhttps://doobydobap.com/recipe/ginger-pork-shogayaki\n\nInstagram @doobydobap \nJoin my discord! 😈\nhttps://discord.gg/doobyverse\nwww.doobydobap.com for recipes & stories"),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "RroYpLxxNjY",
|
||||
title: "I\'m Back. ㅣ cooking korean food, eating alone, working out, and 2M!",
|
||||
length: Some(1313),
|
||||
|
|
@ -702,14 +736,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 1076848,
|
||||
view_count: Some(1076848),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Annyoung doobies! It has been a while since I\'ve sat down and spoken to you all. I\'m thrilled to be back, and I finally feel like I\'m in my element after a much-needed break. \n\nThank you so..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "l47QuudsZ34",
|
||||
title: "We ate our way through Florence (ft. mamadooby)",
|
||||
length: Some(1109),
|
||||
|
|
@ -735,14 +771,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("5 months ago"),
|
||||
view_count: 562349,
|
||||
view_count: Some(562349),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Annyoung doobies :)\nI\'m back after a hiatus, I\'ve been travelling and putting my mental health first so I don\'t burn out!!! Much needed break to be inspired & grow for more content to come!..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "1VW7iXRIrc8",
|
||||
title: "Alone, in the City of Love",
|
||||
length: Some(1875),
|
||||
|
|
@ -768,14 +806,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: 531938,
|
||||
view_count: Some(531938),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("I know it\'s a little long, but I hope you enjoyed this Paris vlog :}\n\nLocation📍\nUdon Restaurant: Sanukiya\n9 Rue d\'Argenteuil, Paris\nCoffee: Telescope Cafe\n5 Rue Villédo, 75001 Paris, France..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "6c58-749p6Y",
|
||||
title: "Old Friends & New",
|
||||
length: Some(774),
|
||||
|
|
@ -801,14 +841,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: 426469,
|
||||
view_count: Some(426469),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Realized I have a typo that says perogis instead of peroni oop \nBut for real, I\'m so thankful for Bobbi bc she was one of the few/ only people that welcomed me to a new school/country where..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "Q2G53LuEUaU",
|
||||
title: "Where we stand",
|
||||
length: Some(858),
|
||||
|
|
@ -834,14 +876,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: 448915,
|
||||
view_count: Some(448915),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Thank you to BetterHelp for sponsoring this video! \nGo to https://www.betterhelp.com/doobydobap to get 10% off your first month :)\n\nLocations 📍\nThis is Dover btw\nhttps://www.google.com/maps/plac..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "8rAOeowNQrI",
|
||||
title: "That\'s so last year",
|
||||
length: Some(1286),
|
||||
|
|
@ -867,14 +911,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: 675443,
|
||||
view_count: Some(675443),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Location 📍\nScience Museum\nhttps://goo.gl/maps/dPPSZwmSrMzhEh9Y7\nNatural History Museum \nhttps://goo.gl/maps/XSu2EZN9XP8rGVWg6\nJoy King Lau - Dim Sum \nhttps://goo.gl/maps/D3rgoN1raQocyQPM6..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "0RGIdIKkbSI",
|
||||
title: "The Muffin Man",
|
||||
length: Some(1052),
|
||||
|
|
@ -900,14 +946,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: 426465,
|
||||
view_count: Some(426465),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Use code DOOBYDOBAP16 for up to 16 FREE MEALS + 3 Surprise Gifts across 6 HelloFresh boxes plus free shipping at https://bit.ly/3Kiz0qb!\n\nMusic\nindolore - je rêve d\'é ( moow edit ) https://soundc..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "NudTbo2CJMY",
|
||||
title: "Flying to London",
|
||||
length: Some(1078),
|
||||
|
|
@ -933,14 +981,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: 1137831,
|
||||
view_count: Some(1137831),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Tomato Beef Curry\n1 packet Japanese Curry Roux\n250g thinly sliced beef \n2 large onions\n2 tbsp butter\n2 tbsp neutral oil \n1 can whole tomatoes\n500mL water\n2 tbsp ketchup \n\n1. Melt 1 tbsp butter..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "8mJk1ncGZig",
|
||||
title: "(not so) Teenage Angst",
|
||||
length: Some(1376),
|
||||
|
|
@ -966,14 +1016,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: 612275,
|
||||
view_count: Some(612275),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Again, I hope you guys know that my vlogs are a visual diary of what’s happening in my life and what I’m feeling that week. I’m not speaking for everyone, so take with a grain o’ salt!..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "qvgCi2WpbfE",
|
||||
title: "can\'t smell :s",
|
||||
length: Some(875),
|
||||
|
|
@ -999,14 +1051,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: 396397,
|
||||
view_count: Some(396397),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Kimchi Jeon \nParmesan Kimchi Jeon or regular, both works\nIngredients\n* 1 cup kimchi + 2 tbsp juice\n* 1 tsp gochujang (optional for extra heat)\n* ⅓ cup parmesan, grated + extra parmesan for..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "Sm4Yqtqr9f8",
|
||||
title: "I have covid",
|
||||
length: Some(814),
|
||||
|
|
@ -1032,14 +1086,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: 599030,
|
||||
view_count: Some(599030),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("I had a bit too much fun with the intro.\nI actually didn\'t realize I shot it in slow-mo. \nThank you all for the supportive messages, donno what I did to deserve you all. Eternally thankful...."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "ZRtf4ksF3qs",
|
||||
title: "Everything I ate in Busan & make up tutorial??",
|
||||
length: Some(1026),
|
||||
|
|
@ -1065,14 +1121,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: 530192,
|
||||
view_count: Some(530192),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("I\'m okay btw!! I got overwhelmed a bit this past weekend in Busan and was really... anxious the entire time I was on my trip :(\nI\'ll still be sharing where I went from last weekend soon as..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "oG4Wth1oVBQ",
|
||||
title: "On the other side",
|
||||
length: Some(1592),
|
||||
|
|
@ -1098,14 +1156,17 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("8 months ago"),
|
||||
view_count: 567604,
|
||||
view_count: Some(567604),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Gochujang Pasta Recipe Link\nhttps://doobydobap.com/recipe/gochujang-pasta-with-prawns\nI just didn\'t put any prawns bc I didn\'t have any!\n\nLocation\ndanil seoul \n66-33 Wangsimni-ro, Seongsu-dong..."),
|
||||
),
|
||||
],
|
||||
ctoken: Some("4qmFsgKhARIYVUNoOGdIZHR6TzJ0WGQ1OTNfYmpFcldnGoQBOGdaZ0dsNTZYQXBZQ2pCRlozTkpiRXRwYURZdFNGZG9ZbVZuUVZObmVVMUJSVFJJYTBsTVExQlFVbXR3YjBkRlMwUnBkVmRhU1VGV1FVRVNKRFl6TkRnd056Wm1MVEF3TURBdE1tRXhaUzA0TnpRNUxXUTBaalUwTjJZNE16a3pZeGdC"),
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ Channel(
|
|||
content: Paginator(
|
||||
count: None,
|
||||
items: [
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "4EcQYK_no5M",
|
||||
title: "EEVblog 1506 - History of Electricity with Kathy Loves Physics",
|
||||
length: Some(6143),
|
||||
|
|
@ -170,14 +170,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 day ago"),
|
||||
view_count: 8813,
|
||||
view_count: Some(8813),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Talking about the history of electricity and physics with Kathy Joseph from Kathey Loves Physics, and her new book:\nThe Lightning Tamers: True Stories of the Dreamers and Schemers Who Harnessed..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "zEzjVUzNAFA",
|
||||
title: "EEVblog 1505 - 120W Home Phantom Power? Audit Time!",
|
||||
length: Some(1464),
|
||||
|
|
@ -203,14 +205,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 days ago"),
|
||||
view_count: 48599,
|
||||
view_count: Some(48599),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("My home takes 120W phantom standby power. Let\'s do a complete audit and see what is consuming the most power, and how it can be reduced.\n\nHow bad product design kills the environment: https://www.y..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "YIbQ3nudCA0",
|
||||
title: "EEVblog 1504 - The COOL thing you MISSED at Tesla AI Day 2022",
|
||||
length: Some(1021),
|
||||
|
|
@ -236,14 +240,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("10 days ago"),
|
||||
view_count: 74126,
|
||||
view_count: Some(74126),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("A very cool bit of electronics failure mode analysis that you missed at the 2022 Tesla AI Day presentation. And it\'s got nothing to do with the Optimus Tesla Bot!\n\nA look at how ceramic capacitor..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "W1Jl0rMRGSg",
|
||||
title: "EEVblog 1503 - Rigol HDO4000 12bit Oscilloscope TEARDOWN",
|
||||
length: Some(1798),
|
||||
|
|
@ -269,14 +275,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("11 days ago"),
|
||||
view_count: 36129,
|
||||
view_count: Some(36129),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Teardown of the new Rigol HDO4000 12bit ultra low noise oscilloscope\n\nPSU teardown: https://www.youtube.com/watch?v=muMjiao5i0k\n\nForum: https://www.eevblog.com/forum/testgear/rigol-hdo1000-and-hdo4..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "YFKu_emNzpk",
|
||||
title: "EEVblog 1502 - Is Home Battery Storage Financially Viable?",
|
||||
length: Some(1199),
|
||||
|
|
@ -302,14 +310,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 weeks ago"),
|
||||
view_count: 87357,
|
||||
view_count: Some(87357),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Running through the numbers to see if home battery storage is viable on my home. \nAnd comparing Tesla Powerwall, Enphase IQ Battery, BYD LVS, and Greenbank battery pricing.\n\nAll my solar videos:..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "gremHHvqYTE",
|
||||
title: "EEVblog 1501 - Rigol HDO4000 Low Noise 12bit Oscilloscope Unboxing & First Impression",
|
||||
length: Some(1794),
|
||||
|
|
@ -335,14 +345,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 weeks ago"),
|
||||
view_count: 48259,
|
||||
view_count: Some(48259),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Rigol\'s new HDO4000 Series ultra low noise 12bit oscilloscope with Centaur chipset.\nUnboxing, first impression, and noise measurements.\n\nAC RMS noise measurement: https://www.youtube.com/watch?v=G8..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "WHO8NBfpaO0",
|
||||
title: "eevBLAB 102 - Last Mile Autonomous Robot Deliveries WILL FAIL",
|
||||
length: Some(742),
|
||||
|
|
@ -368,14 +380,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 weeks ago"),
|
||||
view_count: 27509,
|
||||
view_count: Some(27509),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Four reasons why autonomous pizza delivery robots will FAIL.\nAnd nope, they won\'t save the environment either.\nBut maybe I\'m wrong?\nMagna are trialing a pizza delivery robot in Manhatten.\n..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "W1Q8CxL95_Y",
|
||||
title: "EEVblog 1500 - Automatic Transfer Switch REVERSE ENGINEERED",
|
||||
length: Some(1770),
|
||||
|
|
@ -401,14 +415,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 weeks ago"),
|
||||
view_count: 57925,
|
||||
view_count: Some(57925),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Automatic AC transfer switches are pretty cool devices. A look at what they do, a practical demo, teardown, and then reverse engineering to explain how it does it with a direct one-to-one schematic..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "lagxSrPeoYg",
|
||||
title: "EEVblog 1499 - EcoFlow Delta Pro 3.6kWh Portable Battery TEARDOWN!",
|
||||
length: Some(2334),
|
||||
|
|
@ -434,14 +450,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 77907,
|
||||
view_count: Some(77907),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Teardown of the EcoFlow Delta Pro 3.6kWh portable/home LiFePO4 battery solar inverter/generator.\nBack in the old EEVblog garage!\n\nTeardown photos: https://www.eevblog.com/2022/09/08/eevblog-1499-ec..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "qTctWW9_FmE",
|
||||
title: "EEVblog 1498 - TransPod Fluxjet Hyperloop $550M Boondoggle!",
|
||||
length: Some(2399),
|
||||
|
|
@ -467,14 +485,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 63421,
|
||||
view_count: Some(63421),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("The Transpod FluxJet is Hyperloop based on the \"New physics\" of \"Veillance Flux\"!\nAnd plasma arc power transfer!\n$550M to create a reduced pressure Fluxjet link from Calgary to Edmonton in..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "3t9G80wk0pk",
|
||||
title: "eevBLAB 101 - Why Are Tektronix Oscilloscopes So Expensive?",
|
||||
length: Some(1423),
|
||||
|
|
@ -500,14 +520,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 73052,
|
||||
view_count: Some(73052),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Answering the question of why Tektronix and the other top tier manufactuer\'s oscilloscopes are so expensive? Why don\'t they just make a low cost scope?\nHere is a list of 16 reasons, can you..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "7dze5CnZnmk",
|
||||
title: "EEVblog 1497 - RIP Fluke. Thanks Energizer. NOT.",
|
||||
length: Some(1168),
|
||||
|
|
@ -533,14 +555,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 93529,
|
||||
view_count: Some(93529),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("RIP this Fluke 3000 wireless multimeter. Thanks Energizer for the alkaline battery leakage!\n\nPART 2 Repair: https://www.youtube.com/watch?v=qmcSEJehqZM\n\nEnergizer battery leakage in liquid..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "6XnrZpPYgBg",
|
||||
title: "EEVblog 1496 - Winning Mailbag",
|
||||
length: Some(3139),
|
||||
|
|
@ -566,14 +590,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 41569,
|
||||
view_count: Some(41569),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Meet 13yo Josh, the winner of the Jaycar $5 scope, and designer of Framework laptop boards!\nhttps://lectronz.com/products/uart-expansion-card\nHis Patreon: https://www.patreon.com/i2clabs\nMore..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "Psp3ltpFvws",
|
||||
title: "eevBLAB 100 - Reuters Attacks Odysee - LOL",
|
||||
length: Some(855),
|
||||
|
|
@ -599,14 +625,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 22842,
|
||||
view_count: Some(22842),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Reuters attacks Odysee for hosting conspiracy and violent content and gets OWNED, LOL.\nLet\'s actually take look to see if that\'s the case. SPOILER: It\'s not, Odysee is fantastic.\nWatch an an..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "taVYTYz5vLE",
|
||||
title: "EEVblog 1495 - Quaze Wireless Power (AGAIN!) but for GAMING!",
|
||||
length: Some(2592),
|
||||
|
|
@ -632,14 +660,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 41621,
|
||||
view_count: Some(41621),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Yes, wireless power is BACK! And this time they are targetting gaming rigs.\nQuaze want to power gaming rigs up to 500W with 15MHz resonant RF wireless desktop power. Let\'s take a look! How..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "Y6cZrieFw-k",
|
||||
title: "EEVblog 1494 - FIVE Ways to Open a CHEAP SAFE!",
|
||||
length: Some(1194),
|
||||
|
|
@ -665,14 +695,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 77542,
|
||||
view_count: Some(77542),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("FIVE different easy methods to crack into a cheap Sandleford safe found in the dumpster, WITHOUT using physical force. Including a bonus 6th method that doesn\'t work on this one.\nDon\'t buy..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "Kr2XyhpUdUI",
|
||||
title: "EEVblog 1493 - MacGyver Project - Part 2",
|
||||
length: Some(1785),
|
||||
|
|
@ -698,14 +730,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 34947,
|
||||
view_count: Some(34947),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Powering up the Banshee ultrasonic leak detector LED display to see how the display is multiplexed turned out to be very interesting!\nWith special guest debugger, Sagan, who invents a new industry..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "rxGafdgkal8",
|
||||
title: "EEVblog 1492 - $5 Oscilloscope Repaired! + Oz GIVEAWAY",
|
||||
length: Some(1163),
|
||||
|
|
@ -731,14 +765,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 45618,
|
||||
view_count: Some(45618),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("The $5 Hantek oscilloscope is repaired, and I\'m giving it away to a youngster in Australia.\n\nIf you want the scope, enter here:\nhttps://www.eevblog.com/forum/contests/giveaway-(oz-only)-hantek-osci..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "4yosozyeIP4",
|
||||
title: "EEVblog 1491 - The MacGyver Project - Part 1",
|
||||
length: Some(1706),
|
||||
|
|
@ -764,14 +800,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 34868,
|
||||
view_count: Some(34868),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Part 1 reverse engineering the interface on the LED display of the Banshee Ultrasonic gas leak detector to make a MacGyver type countdown timer THING (for demonetisation purposes).\nThis will..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "06JtC2DC_dQ",
|
||||
title: "EEVblog 1490 - Insane Jaycar Dumpster Sale! 2022",
|
||||
length: Some(1700),
|
||||
|
|
@ -797,14 +835,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 64336,
|
||||
view_count: Some(64336),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Insane Jaycar dumpster relocation sale!\n\nSupport the EEVblog on:\nPatreon: http://www.patreon.com/eevblog\nOdysee: https://odysee.com/@eevblog:7\nWeb Site: http://www.eevblog.com\nEEVblog2: http://www...."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "piquT76w9TI",
|
||||
title: "EEVblog 1489 - Mystery Teardown!",
|
||||
length: Some(1466),
|
||||
|
|
@ -830,14 +870,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 150958,
|
||||
view_count: Some(150958),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Teardown of a bizarre looking Banshee 343 Ultrasonic Gas Leak Detector\n\nThumbs up this video and pinned comment if you want to see a countdown timer refit project!\n\nDatasheet: https://www.instrumar..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "pKuUKT-zU-g",
|
||||
title: "EEVblog 1488 - Tilt Five Augmented Reality AR Glasses - First Reaction!",
|
||||
length: Some(2152),
|
||||
|
|
@ -863,14 +905,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 30903,
|
||||
view_count: Some(30903),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Dave tries Jeri Ellsworth\'s Tilt Five augmented reality AR glasses for the first time!\nUnboxing, first reaction, and a bit of a first user review.\n\n00:00 - Tilt Five AR Kickstarter Glasses..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "_R4wQQNSO6k",
|
||||
title: "EEVblog 1487 - Do Solar Micro Inverters Take Power at Night?",
|
||||
length: Some(2399),
|
||||
|
|
@ -896,14 +940,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 48669,
|
||||
view_count: Some(48669),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("How much power do Enphase and other solar micro inverters draw at night time when switched off? It\'s actually a very interesting question involving real and apparent/reactive power, the system..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "ikp5BorIo_M",
|
||||
title: "EEVblog 1486 - What you DIDN\'T KNOW About Film Capacitor FAILURES!",
|
||||
length: Some(1792),
|
||||
|
|
@ -929,14 +975,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 83505,
|
||||
view_count: Some(83505),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("You might think you know how film capacitors fail and degrade in capacitance over time - self-healing due to surges, right? WRONG!\nCapacitor expert and AVX Fellow Ron Demcko confirms what\'s..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "7O-QckjCXNo",
|
||||
title: "eevBLAB 99 - AI SPAM BOT Youtube Space/Science/Tech Channels? - WTF",
|
||||
length: Some(592),
|
||||
|
|
@ -962,14 +1010,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 42843,
|
||||
view_count: Some(42843),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("WTF are these random mash content spam space/science/tech Youtube channels? Are they auto-generated AI bots?\nThese channels get over 1M views a day!\nhttps://www.youtube.com/channel/UC2jAc3ifBNVT03i..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "VutdTxF4E-0",
|
||||
title: "RIP The Old Garage Lab",
|
||||
length: Some(115),
|
||||
|
|
@ -995,14 +1045,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 26036,
|
||||
view_count: Some(26036),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("RIP The old EEVblog garage lab.\nA slightly extended tour of the old lab: https://odysee.com/@eevblog:7/2021-06-11-Old-Lab-Tour:2\nSecret feature of the EEVblog lab bench: https://www.youtube.com/wat..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "o7xfGuRaq94",
|
||||
title: "EEVblog 1485 - PedalCell CadenceX Bike Generator LOL FAIL!",
|
||||
length: Some(1026),
|
||||
|
|
@ -1028,14 +1080,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 63729,
|
||||
view_count: Some(63729),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("The failed PedalCell CadenceX Bike Generator from the previous mailbag video is tested, torn down, analysed, hilrariously laughed at, and dodgily repaired.\nhttps://pedalcell.com/\n\n00:00 - Failed..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "3WSIfHOv3fc",
|
||||
title: "EEVblog 1484 - Kaba Mas X-09 High Security Electronic Lock Teardown",
|
||||
length: Some(1106),
|
||||
|
|
@ -1061,14 +1115,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 22920,
|
||||
view_count: Some(22920),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Extended version of the Mailbag 1483 teardown of the Kaba Mas X-09 High Security Electronic Lock Teardown\n\nSupport the EEVblog on:\nPatreon: http://www.patreon.com/eevblog\nOdysee: https://odysee.com..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "8yXZJZCKImI",
|
||||
title: "EEVblog 1483 - Holy Mailbag Bomb Batman!",
|
||||
length: Some(3373),
|
||||
|
|
@ -1094,14 +1150,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 66042,
|
||||
view_count: Some(66042),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Bumper Mailbag!\n\nForum: https://www.eevblog.com/forum/blog/eevblog-1483-holy-mailbag-bomb-batman/\n\nSPOILERS:\n00:00 - Contact Harald Covid Bluetooth Tracing \n04:24 - Kaba Mas X09 High Security..."),
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "vJ4pW6LKJWU",
|
||||
title: "EEVblog 1482 - Mains Capacitor Zener Regulator Circuit",
|
||||
length: Some(1132),
|
||||
|
|
@ -1127,14 +1185,17 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 52065,
|
||||
view_count: Some(52065),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("A follow up to the previous video on repairing the heater.\nA viewer asked how the capacitor diode rectifier gave a 24V output. The key is in the zener regulator, so this vidoe looks at how..."),
|
||||
),
|
||||
],
|
||||
ctoken: Some("4qmFsgKhARIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGoQBOGdaZ0dsNTZYQXBZQ2pCRlozTkpOV054YjJ4eWNYSnBjeTA0UVZObmVVMUJSVFJJYTBsTVEwbEhjV3cxYjBkRlVHcHlYM2hTU1VGV1FVRVNKRFl6TkRZMVlqZzFMVEF3TURBdE1qTXlOaTA1WTJSbUxUTmpNamcyWkRReU1tWTNOaGdC"),
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ Channel(
|
|||
content: Paginator(
|
||||
count: None,
|
||||
items: [
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "gremHHvqYTE",
|
||||
title: "EEVblog 1501 - Rigol HDO4000 Low Noise 12bit Oscilloscope Unboxing & First Impression",
|
||||
length: Some(1794),
|
||||
|
|
@ -170,14 +170,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("20 hours ago"),
|
||||
view_count: 19739,
|
||||
view_count: Some(19739),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "WHO8NBfpaO0",
|
||||
title: "eevBLAB 102 - Last Mile Autonomous Robot Deliveries WILL FAIL",
|
||||
length: Some(742),
|
||||
|
|
@ -203,14 +205,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("5 days ago"),
|
||||
view_count: 24194,
|
||||
view_count: Some(24194),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "W1Q8CxL95_Y",
|
||||
title: "EEVblog 1500 - Automatic Transfer Switch REVERSE ENGINEERED",
|
||||
length: Some(1770),
|
||||
|
|
@ -236,14 +240,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 days ago"),
|
||||
view_count: 51443,
|
||||
view_count: Some(51443),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "lagxSrPeoYg",
|
||||
title: "EEVblog 1499 - EcoFlow Delta Pro 3.6kWh Portable Battery TEARDOWN!",
|
||||
length: Some(2334),
|
||||
|
|
@ -269,14 +275,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("13 days ago"),
|
||||
view_count: 72324,
|
||||
view_count: Some(72324),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "qTctWW9_FmE",
|
||||
title: "EEVblog 1498 - TransPod Fluxjet Hyperloop $550M Boondoggle!",
|
||||
length: Some(2399),
|
||||
|
|
@ -302,14 +310,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 weeks ago"),
|
||||
view_count: 57348,
|
||||
view_count: Some(57348),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "3t9G80wk0pk",
|
||||
title: "eevBLAB 101 - Why Are Tektronix Oscilloscopes So Expensive?",
|
||||
length: Some(1423),
|
||||
|
|
@ -335,14 +345,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 weeks ago"),
|
||||
view_count: 68645,
|
||||
view_count: Some(68645),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "7dze5CnZnmk",
|
||||
title: "EEVblog 1497 - RIP Fluke. Thanks Energizer. NOT.",
|
||||
length: Some(1168),
|
||||
|
|
@ -368,14 +380,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 weeks ago"),
|
||||
view_count: 91388,
|
||||
view_count: Some(91388),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "6XnrZpPYgBg",
|
||||
title: "EEVblog 1496 - Winning Mailbag",
|
||||
length: Some(3139),
|
||||
|
|
@ -401,14 +415,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 weeks ago"),
|
||||
view_count: 39993,
|
||||
view_count: Some(39993),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "Psp3ltpFvws",
|
||||
title: "eevBLAB 100 - Reuters Attacks Odysee - LOL",
|
||||
length: Some(855),
|
||||
|
|
@ -434,14 +450,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 weeks ago"),
|
||||
view_count: 22512,
|
||||
view_count: Some(22512),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "taVYTYz5vLE",
|
||||
title: "EEVblog 1495 - Quaze Wireless Power (AGAIN!) but for GAMING!",
|
||||
length: Some(2592),
|
||||
|
|
@ -467,14 +485,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 40137,
|
||||
view_count: Some(40137),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "Y6cZrieFw-k",
|
||||
title: "EEVblog 1494 - FIVE Ways to Open a CHEAP SAFE!",
|
||||
length: Some(1194),
|
||||
|
|
@ -500,14 +520,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 74510,
|
||||
view_count: Some(74510),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "Kr2XyhpUdUI",
|
||||
title: "EEVblog 1493 - MacGyver Project - Part 2",
|
||||
length: Some(1785),
|
||||
|
|
@ -533,14 +555,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 34487,
|
||||
view_count: Some(34487),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "rxGafdgkal8",
|
||||
title: "EEVblog 1492 - $5 Oscilloscope Repaired! + Oz GIVEAWAY",
|
||||
length: Some(1163),
|
||||
|
|
@ -566,14 +590,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 44928,
|
||||
view_count: Some(44928),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "4yosozyeIP4",
|
||||
title: "EEVblog 1491 - The MacGyver Project - Part 1",
|
||||
length: Some(1706),
|
||||
|
|
@ -599,14 +625,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 34324,
|
||||
view_count: Some(34324),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "06JtC2DC_dQ",
|
||||
title: "EEVblog 1490 - Insane Jaycar Dumpster Sale! 2022",
|
||||
length: Some(1700),
|
||||
|
|
@ -632,14 +660,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 63763,
|
||||
view_count: Some(63763),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "piquT76w9TI",
|
||||
title: "EEVblog 1489 - Mystery Teardown!",
|
||||
length: Some(1466),
|
||||
|
|
@ -665,14 +695,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 149186,
|
||||
view_count: Some(149186),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "pKuUKT-zU-g",
|
||||
title: "EEVblog 1488 - Tilt Five Augmented Reality AR Glasses - First Reaction!",
|
||||
length: Some(2152),
|
||||
|
|
@ -698,14 +730,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 30130,
|
||||
view_count: Some(30130),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "_R4wQQNSO6k",
|
||||
title: "EEVblog 1487 - Do Solar Micro Inverters Take Power at Night?",
|
||||
length: Some(2399),
|
||||
|
|
@ -731,14 +765,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 48037,
|
||||
view_count: Some(48037),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "ikp5BorIo_M",
|
||||
title: "EEVblog 1486 - What you DIDN\'T KNOW About Film Capacitor FAILURES!",
|
||||
length: Some(1792),
|
||||
|
|
@ -764,14 +800,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 81958,
|
||||
view_count: Some(81958),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "7O-QckjCXNo",
|
||||
title: "eevBLAB 99 - AI SPAM BOT Youtube Space/Science/Tech Channels? - WTF",
|
||||
length: Some(592),
|
||||
|
|
@ -797,14 +835,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 42635,
|
||||
view_count: Some(42635),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "VutdTxF4E-0",
|
||||
title: "RIP The Old Garage Lab",
|
||||
length: Some(115),
|
||||
|
|
@ -830,14 +870,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 25860,
|
||||
view_count: Some(25860),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "o7xfGuRaq94",
|
||||
title: "EEVblog 1485 - PedalCell CadenceX Bike Generator LOL FAIL!",
|
||||
length: Some(1026),
|
||||
|
|
@ -863,14 +905,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 63035,
|
||||
view_count: Some(63035),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "3WSIfHOv3fc",
|
||||
title: "EEVblog 1484 - Kaba Mas X-09 High Security Electronic Lock Teardown",
|
||||
length: Some(1106),
|
||||
|
|
@ -896,14 +940,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 22731,
|
||||
view_count: Some(22731),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "8yXZJZCKImI",
|
||||
title: "EEVblog 1483 - Holy Mailbag Bomb Batman!",
|
||||
length: Some(3373),
|
||||
|
|
@ -929,14 +975,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 65765,
|
||||
view_count: Some(65765),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "vJ4pW6LKJWU",
|
||||
title: "EEVblog 1482 - Mains Capacitor Zener Regulator Circuit",
|
||||
length: Some(1132),
|
||||
|
|
@ -962,14 +1010,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 51555,
|
||||
view_count: Some(51555),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "myqiqUE00fo",
|
||||
title: "EEVblog 1481 - Dodgy Dangerous Heater REPAIR",
|
||||
length: Some(1622),
|
||||
|
|
@ -995,14 +1045,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 46638,
|
||||
view_count: Some(46638),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "xIokNnjuam8",
|
||||
title: "EEVblog 1480 - Lightyear Zero Solar Powered Electric Car",
|
||||
length: Some(1196),
|
||||
|
|
@ -1028,14 +1080,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 62921,
|
||||
view_count: Some(62921),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "S3R4r2xvVYQ",
|
||||
title: "EEVblog 1479 - Is Your Calculator WRONG?",
|
||||
length: Some(1066),
|
||||
|
|
@ -1061,14 +1115,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 66895,
|
||||
view_count: Some(66895),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "RlwcdUnRw6w",
|
||||
title: "EEVblog 1478 - Waveform Update Rate Shootout - Tek 2 Series vs Others",
|
||||
length: Some(1348),
|
||||
|
|
@ -1094,14 +1150,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 25894,
|
||||
view_count: Some(25894),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "R2fw2g6WFbg",
|
||||
title: "EEVblog 1477 - TEARDOWN! - NEW Tektronix 2 Series Oscilloscope",
|
||||
length: Some(2718),
|
||||
|
|
@ -1127,14 +1185,17 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 80173,
|
||||
view_count: Some(80173),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
],
|
||||
ctoken: Some("4qmFsgKrARIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGmBFZ1oyYVdSbGIzTVlBeUFBTUFFNEFlb0RNRVZuYjBsMVMzWlpPVXREWWw5TVRraExSRWwzUVZSblpWRm5kMGx3ZFVOMGJWRlpVVjlOUjA1d2QwcEpRVlpCUVElM0QlM0SaAixicm93c2UtZmVlZFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUXZpZGVvczEwMg%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -33,5 +33,6 @@ Channel(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ Channel(
|
|||
content: Paginator(
|
||||
count: Some(21),
|
||||
items: [
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "csP93FGy0bs",
|
||||
title: "Chill Out Music Mix • 24/7 Live Radio | Relaxing Deep House, Chillout Lounge, Vocal & Instrumental",
|
||||
length: None,
|
||||
|
|
@ -154,14 +154,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: None,
|
||||
view_count: 94,
|
||||
is_live: true,
|
||||
view_count: Some(94),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "19hKXI1ENrY",
|
||||
title: "Deep House Radio | Relaxing & Chill House, Best Summer Mix 2022, Gym & Workout Music",
|
||||
length: None,
|
||||
|
|
@ -187,14 +189,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: None,
|
||||
view_count: 381,
|
||||
is_live: true,
|
||||
view_count: Some(381),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "CqMUC5eXX7c",
|
||||
title: "Back To School / Work 📚 Deep Focus Chillout Mix | The Good Life Radio #4",
|
||||
length: Some(4667),
|
||||
|
|
@ -220,14 +224,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 year ago"),
|
||||
view_count: 241528,
|
||||
view_count: Some(241528),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "A77SYlXKQEM",
|
||||
title: "Chillout Lounge 🏖\u{fe0f} Calm & Relaxing Background Music | The Good Life Radio #3",
|
||||
length: Some(1861),
|
||||
|
|
@ -253,14 +259,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 year ago"),
|
||||
view_count: 118351,
|
||||
view_count: Some(118351),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "72vkRHQfjbk",
|
||||
title: "Summer Lovers 💖 A Beautiful & Relaxing Chillout Deep House Mix | The Good Life Radio #2",
|
||||
length: Some(1832),
|
||||
|
|
@ -286,14 +294,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 year ago"),
|
||||
view_count: 157971,
|
||||
view_count: Some(157971),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "AMWMDhibROw",
|
||||
title: "Relaxing & Chill House 🌴 Summer \'21 Chill-Out Mix | The Good Life Radio #1",
|
||||
length: Some(1949),
|
||||
|
|
@ -319,14 +329,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 year ago"),
|
||||
view_count: 82309,
|
||||
view_count: Some(82309),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "9UMxZofMNbA",
|
||||
title: "Chillout Lounge - Calm & Relaxing Background Music | Study, Work, Sleep, Meditation, Chill",
|
||||
length: None,
|
||||
|
|
@ -352,14 +364,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: None,
|
||||
view_count: 2043,
|
||||
is_live: true,
|
||||
view_count: Some(2043),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "a2sEYVwBvX4",
|
||||
title: "Paratone - Heaven Is A Place On Earth (feat. kaii)",
|
||||
length: Some(161),
|
||||
|
|
@ -385,14 +399,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 years ago"),
|
||||
view_count: 186475,
|
||||
view_count: Some(186475),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "JAY-prtJnGY",
|
||||
title: "Joseph Feinstein - Where I Belong",
|
||||
length: Some(126),
|
||||
|
|
@ -418,14 +434,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 years ago"),
|
||||
view_count: 66425,
|
||||
view_count: Some(66425),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "DySa8OrQDi4",
|
||||
title: "LA Vision & Gigi D\'Agostino - Hollywood",
|
||||
length: Some(200),
|
||||
|
|
@ -451,14 +469,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 years ago"),
|
||||
view_count: 1520020,
|
||||
view_count: Some(1520020),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "NqzXULaB8MA",
|
||||
title: "LO - Home",
|
||||
length: Some(163),
|
||||
|
|
@ -484,14 +504,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 years ago"),
|
||||
view_count: 37549,
|
||||
view_count: Some(37549),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "UGzy6uhZkmw",
|
||||
title: "Luca - Sunset",
|
||||
length: Some(153),
|
||||
|
|
@ -517,14 +539,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 years ago"),
|
||||
view_count: 33002,
|
||||
view_count: Some(33002),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "iuvapHKpW8A",
|
||||
title: "nourii - Better Off (feat. BCS)",
|
||||
length: Some(126),
|
||||
|
|
@ -550,14 +574,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 years ago"),
|
||||
view_count: 42036,
|
||||
view_count: Some(42036),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "n_1Nwht-Gh4",
|
||||
title: "Deep House Covers & Remixes of Popular Songs 2020 🌴 Deep House, G-House, Chill-Out Music Playlist",
|
||||
length: Some(2940),
|
||||
|
|
@ -583,14 +609,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 years ago"),
|
||||
view_count: 322935,
|
||||
view_count: Some(322935),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "6TptI5BtP5U",
|
||||
title: "The Good Life Radio Mix #2 | Summer Memories ☀\u{fe0f} (Chill Music Playlist 2020)",
|
||||
length: Some(3448),
|
||||
|
|
@ -616,14 +644,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 years ago"),
|
||||
view_count: 91980,
|
||||
view_count: Some(91980),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "36YnV9STBqc",
|
||||
title: "The Good Life Radio\u{a0}•\u{a0}24/7 Live Radio | Best Relax House, Chillout, Study, Running, Gym, Happy Music",
|
||||
length: None,
|
||||
|
|
@ -649,14 +679,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: None,
|
||||
view_count: 4030,
|
||||
is_live: true,
|
||||
view_count: Some(4030),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "7x6ii2TcsPE",
|
||||
title: "The Good Life Radio Mix #1 | Relaxing & Chill House Music Playlist 2020",
|
||||
length: Some(2726),
|
||||
|
|
@ -682,14 +714,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 years ago"),
|
||||
view_count: 288098,
|
||||
view_count: Some(288098),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "mxV5MBZYYDE",
|
||||
title: "Christmas Music with Vocals 🎅 Best Relaxing Christmas Songs 2020",
|
||||
length: Some(5863),
|
||||
|
|
@ -715,14 +749,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 years ago"),
|
||||
view_count: 50818,
|
||||
view_count: Some(50818),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "hh2AOoPoAIo",
|
||||
title: "The Good Life Radio Mix 2019 🎅 Winter & Christmas Relax House Playlist [Best of Part 1]",
|
||||
length: Some(2530),
|
||||
|
|
@ -748,14 +784,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 years ago"),
|
||||
view_count: 98431,
|
||||
view_count: Some(98431),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "aFlvhtWsJ0g",
|
||||
title: "Chillout Playlist | Relaxing Summer Music Mix 2019 [Deep & Tropical House]",
|
||||
length: Some(2483),
|
||||
|
|
@ -781,14 +819,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 years ago"),
|
||||
view_count: 572456,
|
||||
view_count: Some(572456),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "cD-d7u6fnEI",
|
||||
title: "Chill House Playlist | Relaxing Summer Music 2019",
|
||||
length: Some(3165),
|
||||
|
|
@ -814,14 +854,17 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 years ago"),
|
||||
view_count: 3114909,
|
||||
view_count: Some(3114909),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -116,5 +116,6 @@ Channel(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ Channel(
|
|||
content: Paginator(
|
||||
count: None,
|
||||
items: [
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "JBUZE0mIlg8",
|
||||
title: "small but sure joy",
|
||||
length: None,
|
||||
|
|
@ -126,14 +126,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 day ago"),
|
||||
view_count: 443549,
|
||||
view_count: Some(443549),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "SRrvxFc2b2c",
|
||||
title: "i don\'t believe in long distance relationships",
|
||||
length: None,
|
||||
|
|
@ -144,14 +146,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 days ago"),
|
||||
view_count: 1154962,
|
||||
view_count: Some(1154962),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "l9TiwunjzgA",
|
||||
title: "long distance",
|
||||
length: Some(1043),
|
||||
|
|
@ -177,14 +181,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 days ago"),
|
||||
view_count: 477460,
|
||||
view_count: Some(477460),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "cNx0ql9gnf4",
|
||||
title: "come over :)",
|
||||
length: None,
|
||||
|
|
@ -195,14 +201,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 days ago"),
|
||||
view_count: 1388173,
|
||||
view_count: Some(1388173),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "fGQUWI4o__A",
|
||||
title: "Baskin Robbins in South Korea",
|
||||
length: None,
|
||||
|
|
@ -213,14 +221,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 days ago"),
|
||||
view_count: 1738301,
|
||||
view_count: Some(1738301),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "Q73VTjdqVA8",
|
||||
title: "dry hot pot",
|
||||
length: None,
|
||||
|
|
@ -231,14 +241,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("9 days ago"),
|
||||
view_count: 1316594,
|
||||
view_count: Some(1316594),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "pRVSdUxdsVw",
|
||||
title: "Repairing...",
|
||||
length: Some(965),
|
||||
|
|
@ -264,14 +276,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("10 days ago"),
|
||||
view_count: 478703,
|
||||
view_count: Some(478703),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "gTG2WDbiYGo",
|
||||
title: "time machine",
|
||||
length: None,
|
||||
|
|
@ -282,14 +296,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("11 days ago"),
|
||||
view_count: 1412213,
|
||||
view_count: Some(1412213),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "y5JK5YFp92g",
|
||||
title: "tiramissu",
|
||||
length: None,
|
||||
|
|
@ -300,14 +316,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("13 days ago"),
|
||||
view_count: 1513305,
|
||||
view_count: Some(1513305),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "pvSWHm4wlxY",
|
||||
title: "having kids",
|
||||
length: None,
|
||||
|
|
@ -318,14 +336,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 weeks ago"),
|
||||
view_count: 8936223,
|
||||
view_count: Some(8936223),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "2FJVhdOO0F0",
|
||||
title: "a health scare",
|
||||
length: Some(1238),
|
||||
|
|
@ -351,14 +371,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 weeks ago"),
|
||||
view_count: 987083,
|
||||
view_count: Some(987083),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "CqFGACRrWJE",
|
||||
title: "just do it",
|
||||
length: None,
|
||||
|
|
@ -369,14 +391,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 weeks ago"),
|
||||
view_count: 2769717,
|
||||
view_count: Some(2769717),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "CutR_1SDDzY",
|
||||
title: "feels good to be back",
|
||||
length: Some(1159),
|
||||
|
|
@ -402,14 +426,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 weeks ago"),
|
||||
view_count: 497660,
|
||||
view_count: Some(497660),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "DdGr6t2NqKc",
|
||||
title: "coming soon",
|
||||
length: None,
|
||||
|
|
@ -420,14 +446,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 weeks ago"),
|
||||
view_count: 572107,
|
||||
view_count: Some(572107),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "jKS44NMWuXw",
|
||||
title: "adult money",
|
||||
length: None,
|
||||
|
|
@ -438,14 +466,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 weeks ago"),
|
||||
view_count: 1707132,
|
||||
view_count: Some(1707132),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "kx1YtJM_vbI",
|
||||
title: "a fig\'s journey",
|
||||
length: None,
|
||||
|
|
@ -456,14 +486,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 weeks ago"),
|
||||
view_count: 933094,
|
||||
view_count: Some(933094),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "Sdbzs-1WWH0",
|
||||
title: "How to.. Mozzarella 🧀",
|
||||
length: None,
|
||||
|
|
@ -474,14 +506,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 5985184,
|
||||
view_count: Some(5985184),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "9qBHyJIDous",
|
||||
title: "how to drink like a real korean",
|
||||
length: None,
|
||||
|
|
@ -492,14 +526,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 14741387,
|
||||
view_count: Some(14741387),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "mBeFDb4gp8s",
|
||||
title: "mr. krabs soup",
|
||||
length: None,
|
||||
|
|
@ -510,14 +546,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 2511322,
|
||||
view_count: Some(2511322),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "b38r1UYqoBQ",
|
||||
title: "in five years",
|
||||
length: None,
|
||||
|
|
@ -528,14 +566,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 2364408,
|
||||
view_count: Some(2364408),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "KUz7oArksR4",
|
||||
title: "running away",
|
||||
length: Some(1023),
|
||||
|
|
@ -561,14 +601,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 706059,
|
||||
view_count: Some(706059),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "RdFk4WaifEo",
|
||||
title: "a weeknight dinner",
|
||||
length: None,
|
||||
|
|
@ -579,14 +621,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 1947627,
|
||||
view_count: Some(1947627),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "GuyGyzZcumI",
|
||||
title: "McDonald\'s Michelin Burger",
|
||||
length: None,
|
||||
|
|
@ -597,14 +641,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 4763839,
|
||||
view_count: Some(4763839),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "07Zipsb3-qU",
|
||||
title: "cwispy potato pancake",
|
||||
length: None,
|
||||
|
|
@ -615,14 +661,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 1915695,
|
||||
view_count: Some(1915695),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "3kaePnU6Clo",
|
||||
title: "authenticity is overrated",
|
||||
length: None,
|
||||
|
|
@ -633,14 +681,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 7268944,
|
||||
view_count: Some(7268944),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "rt4rXMftnpg",
|
||||
title: "you can kimchi anything (T&C applies)",
|
||||
length: None,
|
||||
|
|
@ -651,14 +701,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 2539103,
|
||||
view_count: Some(2539103),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "DTyLUvbf128",
|
||||
title: "egg, soy, and perfect pot rice",
|
||||
length: None,
|
||||
|
|
@ -669,14 +721,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 5545680,
|
||||
view_count: Some(5545680),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "DzjLBgIe_aI",
|
||||
title: "love language",
|
||||
length: None,
|
||||
|
|
@ -687,14 +741,16 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 2202314,
|
||||
view_count: Some(2202314),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "sPb2gyN-hnE",
|
||||
title: "worth fighting for",
|
||||
length: Some(1232),
|
||||
|
|
@ -720,14 +776,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 613416,
|
||||
view_count: Some(613416),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "9JboRKeJ2m4",
|
||||
title: "Rating Italian McDonald\'s",
|
||||
length: None,
|
||||
|
|
@ -738,14 +796,17 @@ Channel(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 6443699,
|
||||
view_count: Some(6443699),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
],
|
||||
ctoken: Some("4qmFsgKrARIYVUNoOGdIZHR6TzJ0WGQ1OTNfYmpFcldnGmBFZ1oyYVdSbGIzTVlBeUFBTUFFNEFlb0RNRVZuYzBrM2NsTnVkazF4U1hWemRqQkJVMmQ1VFVGRk5FaHJTVXhEVUhac2NscHJSMFZKWVhWd016RkpRVlpCUVElM0QlM0SaAixicm93c2UtZmVlZFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ3ZpZGVvczEwMg%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ Channel(
|
|||
content: Paginator(
|
||||
count: None,
|
||||
items: [
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "B-KjpyR4n5Q",
|
||||
title: "The Online Manosphere",
|
||||
length: None,
|
||||
|
|
@ -158,14 +158,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: Some("2022-09-27T18:00:00+02:00"),
|
||||
publish_date_txt: None,
|
||||
view_count: 237,
|
||||
view_count: Some(237),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: true,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "umDsCyZ67J0",
|
||||
title: "Ukraine - The Beginning of the End",
|
||||
length: Some(614),
|
||||
|
|
@ -191,14 +193,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("13 days ago"),
|
||||
view_count: 742284,
|
||||
view_count: Some(742284),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "dNgKGL8lQck",
|
||||
title: "Honest Russian Military Recruitment Video",
|
||||
length: Some(62),
|
||||
|
|
@ -224,14 +228,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 weeks ago"),
|
||||
view_count: 420368,
|
||||
view_count: Some(420368),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "UVWciFJeFNA",
|
||||
title: "Self-Driving Cars Will Only Make Traffic Worse",
|
||||
length: Some(458),
|
||||
|
|
@ -257,14 +263,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 weeks ago"),
|
||||
view_count: 528718,
|
||||
view_count: Some(528718),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "vyWaax07_ks",
|
||||
title: "NEOM Is The Parody Of The Future",
|
||||
length: Some(636),
|
||||
|
|
@ -290,14 +298,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 897237,
|
||||
view_count: Some(897237),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "onQ0ICkLEJw",
|
||||
title: "I Got An Email From \"The Dubai Sheikh\'s Personal Friend\"",
|
||||
length: Some(211),
|
||||
|
|
@ -323,14 +333,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 526638,
|
||||
view_count: Some(526638),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "yDEL1pTYOhs",
|
||||
title: "The \"Meritocracy\" Isn\'t Real",
|
||||
length: Some(385),
|
||||
|
|
@ -356,14 +368,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 368801,
|
||||
view_count: Some(368801),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "EnVvlhhqWtw",
|
||||
title: "City Review - Prague: Beautiful and Disappointing",
|
||||
length: Some(834),
|
||||
|
|
@ -389,14 +403,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 286737,
|
||||
view_count: Some(286737),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "Oxz4oY0T85Y",
|
||||
title: "European International Rail SUCKS, Here\'s Why",
|
||||
length: Some(810),
|
||||
|
|
@ -422,14 +438,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 664499,
|
||||
view_count: Some(664499),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "lxUEuOkblws",
|
||||
title: "Why the Straddling Bus Failed",
|
||||
length: Some(614),
|
||||
|
|
@ -455,14 +473,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 592227,
|
||||
view_count: Some(592227),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "UG8jiKOtedk",
|
||||
title: "How Canadian Ukrainian Volunteer Got Exposed",
|
||||
length: Some(538),
|
||||
|
|
@ -488,14 +508,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 396946,
|
||||
view_count: Some(396946),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "bQld7iJJSyk",
|
||||
title: "Why Roads ALWAYS Fill Up, No Matter How Much We Widen Them",
|
||||
length: Some(159),
|
||||
|
|
@ -521,14 +543,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 778430,
|
||||
view_count: Some(778430),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "WUK0K5mdQ_s",
|
||||
title: "Egypt\'s New Capital is an Ozymandian Nightmare",
|
||||
length: Some(870),
|
||||
|
|
@ -554,14 +578,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 2118499,
|
||||
view_count: Some(2118499),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "LB-vsT1Sl68",
|
||||
title: "Why Car-Centric Cities are a GREAT Idea",
|
||||
length: Some(369),
|
||||
|
|
@ -587,14 +613,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 525824,
|
||||
view_count: Some(525824),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "p8NiM_p8n5A",
|
||||
title: "HE FIXED TRAFFIC",
|
||||
length: Some(157),
|
||||
|
|
@ -620,14 +648,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 1097056,
|
||||
view_count: Some(1097056),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "U9YdnzOf4NQ",
|
||||
title: "Why a Mars Colony is a Stupid and Dangerous Idea",
|
||||
length: Some(1000),
|
||||
|
|
@ -653,14 +683,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 1532114,
|
||||
view_count: Some(1532114),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "CH55WpJxF1s",
|
||||
title: "What #Elongate Is Really About",
|
||||
length: Some(122),
|
||||
|
|
@ -686,14 +718,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 511601,
|
||||
view_count: Some(511601),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "PPcsZwUv350",
|
||||
title: "Vladimir Putin\'s Three Choices",
|
||||
length: Some(505),
|
||||
|
|
@ -719,14 +753,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 662099,
|
||||
view_count: Some(662099),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "B78-FgNqdc8",
|
||||
title: "Was I WRONG About Electric Buses?",
|
||||
length: Some(1536),
|
||||
|
|
@ -752,14 +788,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 549826,
|
||||
view_count: Some(549826),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "JCXLwOMSDxk",
|
||||
title: "If We Treated Afghanistan Like Ukraine",
|
||||
length: Some(92),
|
||||
|
|
@ -785,14 +823,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 538197,
|
||||
view_count: Some(538197),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "IpIWswLYAbA",
|
||||
title: "Who\'s Winning the War for Ukraine?",
|
||||
length: Some(646),
|
||||
|
|
@ -818,14 +858,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("5 months ago"),
|
||||
view_count: 536648,
|
||||
view_count: Some(536648),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "NIItoD1Ebh0",
|
||||
title: "Old Habits Die Hard",
|
||||
length: Some(107),
|
||||
|
|
@ -851,14 +893,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("5 months ago"),
|
||||
view_count: 724630,
|
||||
view_count: Some(724630),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "pENUV9DLa2g",
|
||||
title: "Anarcho-Capitalism In Practice III - The Final Attempt",
|
||||
length: Some(600),
|
||||
|
|
@ -884,14 +928,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("5 months ago"),
|
||||
view_count: 426960,
|
||||
view_count: Some(426960),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "gFGQI8P9BMg",
|
||||
title: "How The Gravel Institute Lies To You About Ukraine",
|
||||
length: Some(2472),
|
||||
|
|
@ -917,14 +963,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: 735941,
|
||||
view_count: Some(735941),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "AVLevneWvaE",
|
||||
title: "Why Russia Can\'t Achieve Air Supremacy In Ukraine",
|
||||
length: Some(188),
|
||||
|
|
@ -950,14 +998,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: 502205,
|
||||
view_count: Some(502205),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "MfRcY90OccY",
|
||||
title: "Can Ukraine Actually WIN This?",
|
||||
length: Some(606),
|
||||
|
|
@ -983,14 +1033,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: 718668,
|
||||
view_count: Some(718668),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "dQXwreYzJ40",
|
||||
title: "Here\'s What Will Happen To Ukraine [Update: yep, called it]",
|
||||
length: Some(397),
|
||||
|
|
@ -1016,14 +1068,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: 775830,
|
||||
view_count: Some(775830),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "-OO3RiNMDB8",
|
||||
title: "Assessing The Russian Invasion Threat",
|
||||
length: Some(655),
|
||||
|
|
@ -1049,14 +1103,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: 480357,
|
||||
view_count: Some(480357),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "obMTYs30E9A",
|
||||
title: "Ukraine - The Country That Defied Vladimir Putin",
|
||||
length: Some(2498),
|
||||
|
|
@ -1082,14 +1138,16 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: 460878,
|
||||
view_count: Some(460878),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
ChannelVideo(
|
||||
VideoItem(
|
||||
id: "4-2bR1iFlhk",
|
||||
title: "\"Wait, Russia isn\'t in NATO?!\" Insane Debate on Ukraine, US Politics, and more!",
|
||||
length: Some(12151),
|
||||
|
|
@ -1115,14 +1173,17 @@ Channel(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: 228151,
|
||||
view_count: Some(228151),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: None,
|
||||
),
|
||||
],
|
||||
ctoken: Some("4qmFsgKnARIYVUNjdmZIYS1HSFNPSEZBalUwLUllNTdBGlxFZ1oyYVdSbGIzTVlBeUFBTUFFNEFlb0RNa1ZuYzBsdFlYbFhlRkJZYnpWMlltcEJVMmQ1VFVGRk5FaHJTVTFEVFdGVWVrcHJSMFZPUzJzMmNqQkNVMEZHVVVGQpoCLGJyb3dzZS1mZWVkVUNjdmZIYS1HSFNPSEZBalUwLUllNTdBdmlkZW9zMTAy"),
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
---
|
||||
source: src/client/channel.rs
|
||||
source: src/client/pagination.rs
|
||||
expression: map_res.c
|
||||
---
|
||||
Paginator(
|
||||
count: None,
|
||||
items: [
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHutdg1kZkG7aAYhjoJnk2fc",
|
||||
name: "Nixie Tube Display Project",
|
||||
thumbnail: [
|
||||
|
|
@ -15,9 +15,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(9),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHujYmL_-5CBUg-za2osSUVI",
|
||||
name: "Mystery Teardown",
|
||||
thumbnail: [
|
||||
|
|
@ -27,9 +28,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(16),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHuGQmy-eJgqB28b2AWKteuG",
|
||||
name: "EEVsmoke",
|
||||
thumbnail: [
|
||||
|
|
@ -39,9 +41,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHuSab0CmpulB2Wv8Kz0985m",
|
||||
name: "EEVcomments",
|
||||
thumbnail: [
|
||||
|
|
@ -51,9 +54,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvtQ5FxEivbCGxp4t3W8zKE",
|
||||
name: "Spectrum Analyser",
|
||||
thumbnail: [
|
||||
|
|
@ -63,9 +67,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(11),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHuJUxiTbVKHzWjvIVf1NVOl",
|
||||
name: "Space",
|
||||
thumbnail: [
|
||||
|
|
@ -75,9 +80,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(5),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHtTXTVCXVDIRKV442ynD7Pz",
|
||||
name: "Lunar Rover",
|
||||
thumbnail: [
|
||||
|
|
@ -87,9 +93,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHsma5qL7piUiM5N4IOyuQyx",
|
||||
name: "Wayback Wednesday",
|
||||
thumbnail: [
|
||||
|
|
@ -99,9 +106,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvLb_HJBKqbgZ9IvEX-pVOF",
|
||||
name: "Magazines",
|
||||
thumbnail: [
|
||||
|
|
@ -111,9 +119,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(4),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHugE85Y_LckT4EhrKwo7WQe",
|
||||
name: "Embedded Computing",
|
||||
thumbnail: [
|
||||
|
|
@ -123,9 +132,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(4),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHu3GsTHwHoAXlWVcL3c3dA0",
|
||||
name: "High Speed Camera",
|
||||
thumbnail: [
|
||||
|
|
@ -135,9 +145,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvTyDxI-_RDK8UlPbJ5FNf9",
|
||||
name: "Announcements & Misc",
|
||||
thumbnail: [
|
||||
|
|
@ -147,9 +158,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(28),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHtT17_AeYMe-EOS_GXCBQQ1",
|
||||
name: "Interviews",
|
||||
thumbnail: [
|
||||
|
|
@ -159,9 +171,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(9),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHsCTtj-T_vkpTTbBXW4sB51",
|
||||
name: "Oscilloscope Tutorials",
|
||||
thumbnail: [
|
||||
|
|
@ -171,9 +184,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(38),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHsKCtJJ_rlRP5qE7lN-1EMX",
|
||||
name: "Anti-Static ESD",
|
||||
thumbnail: [
|
||||
|
|
@ -183,9 +197,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(7),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvFf9a2swL8QVMwji0wT3ha",
|
||||
name: "Unboxing",
|
||||
thumbnail: [
|
||||
|
|
@ -195,9 +210,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHtn9n6n-uB8VNCTrERwYxLZ",
|
||||
name: "Power Supplies",
|
||||
thumbnail: [
|
||||
|
|
@ -207,9 +223,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(43),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHuo-6paPTh3ji7AEMpnSna6",
|
||||
name: "CNC Milling Machine",
|
||||
thumbnail: [
|
||||
|
|
@ -219,9 +236,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvpVeLXSGlS7EBlY3zKfIXh",
|
||||
name: "Capacitors",
|
||||
thumbnail: [
|
||||
|
|
@ -231,9 +249,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(15),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHsNGit9YgkuxsFtFNJxwgot",
|
||||
name: "PCB Assembly",
|
||||
thumbnail: [
|
||||
|
|
@ -243,9 +262,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(5),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvsggk5TwGdR2BZcoKRkQ2I",
|
||||
name: "3D Printing",
|
||||
thumbnail: [
|
||||
|
|
@ -255,9 +275,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(6),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHtH_DR5hAIGQ-Ty6f9TZWNV",
|
||||
name: "Video Editing / PC Builds",
|
||||
thumbnail: [
|
||||
|
|
@ -267,9 +288,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(3),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvPZ1-dDC449w_r2M0R4jtc",
|
||||
name: "Solar Power Systems",
|
||||
thumbnail: [
|
||||
|
|
@ -279,9 +301,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(19),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHtolTr61FnHtvZb6tRPrs8m",
|
||||
name: "EEVblab",
|
||||
thumbnail: [
|
||||
|
|
@ -291,9 +314,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(101),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHsc8y1buFPJZaD1kKzIxpWL",
|
||||
name: "Repairs",
|
||||
thumbnail: [
|
||||
|
|
@ -303,9 +327,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(78),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvBpmbLABRmSKv2b0C4LWV_",
|
||||
name: "Debunking",
|
||||
thumbnail: [
|
||||
|
|
@ -315,9 +340,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(73),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHs_8iObryqVCeqLIo5KTFQ-",
|
||||
name: "Lab Bench Builds + ESD Mats",
|
||||
thumbnail: [
|
||||
|
|
@ -327,9 +353,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(9),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvatF_8oJ2qpKxi_wWw6YN4",
|
||||
name: "Reverse Engineering",
|
||||
thumbnail: [
|
||||
|
|
@ -339,9 +366,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(10),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvwQR69zYRyxSkujQs2SgLl",
|
||||
name: "Scams",
|
||||
thumbnail: [
|
||||
|
|
@ -351,9 +379,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(5),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
PlaylistItem(
|
||||
id: "PLvOlSehNtuHvRvEU3VebO2JHa1I_iIAQD",
|
||||
name: "Hacking / Experiments",
|
||||
thumbnail: [
|
||||
|
|
@ -363,8 +392,10 @@ Paginator(
|
|||
height: 270,
|
||||
),
|
||||
],
|
||||
channel: None,
|
||||
video_count: Some(63),
|
||||
),
|
||||
],
|
||||
ctoken: Some("4qmFsgLCARIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGnRFZ2x3YkdGNWJHbHpkSE1ZQXlBQk1BRTRBZW9EUEVOblRrUlJhbEZUU2tKSmFWVkZlREpVTW5oVVdsZG9UMlJJVmtsa2JFb3lVbFpWZWxadFZtbFVla3BMVTBkRmVGTldPWEJUVlVaU1VrTm5PQSUzRCUzRJoCL2Jyb3dzZS1mZWVkVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RcGxheWxpc3RzMTA0"),
|
||||
endpoint: browse,
|
||||
)
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
---
|
||||
source: src/client/search.rs
|
||||
source: src/client/pagination.rs
|
||||
expression: map_res.c
|
||||
---
|
||||
Paginator(
|
||||
count: Some(7250),
|
||||
items: [
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "N5AKQflK1TU",
|
||||
title: "When you impulse buy...",
|
||||
length: Some(60),
|
||||
|
|
@ -16,7 +16,7 @@ Paginator(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -28,15 +28,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 day ago"),
|
||||
view_count: 859366,
|
||||
view_count: Some(859366),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
short_description: "shorts #jam https://doobydobap.com/recipe/hongsi_jam Instagram @doobydobap Join my discord!",
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("shorts #jam https://doobydobap.com/recipe/hongsi_jam Instagram @doobydobap Join my discord!"),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "OzIFALQ_YtA",
|
||||
title: "taste testing gam!",
|
||||
length: Some(60),
|
||||
|
|
@ -47,7 +48,7 @@ Paginator(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -59,15 +60,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 days ago"),
|
||||
view_count: 1000402,
|
||||
view_count: Some(1000402),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
short_description: "shorts #fruit #mukbang Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for\u{a0}...",
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("shorts #fruit #mukbang Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "zYHB38UlzE0",
|
||||
title: "Q&A l relationships, burnout, privilege, college advice, living alone, and life after youtube?",
|
||||
length: Some(775),
|
||||
|
|
@ -83,7 +85,7 @@ Paginator(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -95,15 +97,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 528795,
|
||||
view_count: Some(528795),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "So many questions I wasn\'t able to answer, but if you comment below I\'ll try and answer every single one of them!!!! A little bit of\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("So many questions I wasn\'t able to answer, but if you comment below I\'ll try and answer every single one of them!!!! A little bit of\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "GvutfmW26JQ",
|
||||
title: "👹stay sour 🍋",
|
||||
length: Some(52),
|
||||
|
|
@ -114,7 +117,7 @@ Paginator(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -126,15 +129,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("8 days ago"),
|
||||
view_count: 1096055,
|
||||
view_count: Some(1096055),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
short_description: "Ingredients: ** Citrus Filling** 1 cup mandarin juice or any orange-y citrus in season! 6 eggs 1 1/2 cup sugar ⅓ cup flour zest of 1\u{a0}...",
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("Ingredients: ** Citrus Filling** 1 cup mandarin juice or any orange-y citrus in season! 6 eggs 1 1/2 cup sugar ⅓ cup flour zest of 1\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "gK-jLnvVsb0",
|
||||
title: "Contradicting myself",
|
||||
length: Some(1381),
|
||||
|
|
@ -150,7 +154,7 @@ Paginator(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -162,15 +166,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("8 months ago"),
|
||||
view_count: 928968,
|
||||
view_count: Some(928968),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "Sesame Granola Recipe 2 cups old-fashioned instant oats 2 cups mixture of seeds / nuts of your choice (I used ½ cup each of\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("Sesame Granola Recipe 2 cups old-fashioned instant oats 2 cups mixture of seeds / nuts of your choice (I used ½ cup each of\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "NudTbo2CJMY",
|
||||
title: "Flying to London",
|
||||
length: Some(1078),
|
||||
|
|
@ -186,7 +191,7 @@ Paginator(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -198,15 +203,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: 1137138,
|
||||
view_count: Some(1137138),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "Tomato Beef Curry 1 packet Japanese Curry Roux 250g thinly sliced beef 2 large onions 2 tbsp butter 2 tbsp neutral oil 1 can\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("Tomato Beef Curry 1 packet Japanese Curry Roux 250g thinly sliced beef 2 large onions 2 tbsp butter 2 tbsp neutral oil 1 can\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "Nc0HzyDRjm0",
|
||||
title: "Stekki-don ㅣ After Hours ep.2",
|
||||
length: Some(749),
|
||||
|
|
@ -222,7 +228,7 @@ Paginator(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -234,15 +240,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("8 months ago"),
|
||||
view_count: 462437,
|
||||
view_count: Some(462437),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "Stekki-Don (for two, or for one very hungry person) 500g Ribeye 1 tsp Kosher salt 2 tbsp unsalted butter Sauce 4 tbsp light soy\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("Stekki-Don (for two, or for one very hungry person) 500g Ribeye 1 tsp Kosher salt 2 tbsp unsalted butter Sauce 4 tbsp light soy\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "pvSWHm4wlxY",
|
||||
title: "having kids",
|
||||
length: Some(60),
|
||||
|
|
@ -253,7 +260,7 @@ Paginator(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -265,15 +272,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 11285067,
|
||||
view_count: Some(11285067),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
short_description: "shorts Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for recipes & stories.",
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("shorts Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for recipes & stories."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "fGQUWI4o__A",
|
||||
title: "Baskin Robbins in South Korea",
|
||||
length: Some(53),
|
||||
|
|
@ -284,7 +292,7 @@ Paginator(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -296,15 +304,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 weeks ago"),
|
||||
view_count: 2415040,
|
||||
view_count: Some(2415040),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
short_description: "shorts #icecream Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for recipes\u{a0}...",
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("shorts #icecream Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for recipes\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "GuyGyzZcumI",
|
||||
title: "McDonald\'s Michelin Burger",
|
||||
length: Some(59),
|
||||
|
|
@ -315,7 +324,7 @@ Paginator(
|
|||
height: 720,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -327,15 +336,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 5100787,
|
||||
view_count: Some(5100787),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
short_description: "mcdonalds #michelin #fastfood Instagram @doobydobap Join my discord! https://discord.gg/doobyverse\u{a0}...",
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("mcdonalds #michelin #fastfood Instagram @doobydobap Join my discord! https://discord.gg/doobyverse\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "6VGG19W08UQ",
|
||||
title: "Nostalgia is a powerful ingredient",
|
||||
length: Some(52),
|
||||
|
|
@ -346,7 +356,7 @@ Paginator(
|
|||
height: 480,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -358,15 +368,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("10 months ago"),
|
||||
view_count: 55308394,
|
||||
view_count: Some(55308394),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
short_description: "shorts ASMR version on my Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com\u{a0}...",
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("shorts ASMR version on my Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "p3Xhx6aQEXo",
|
||||
title: "Jjajangmyun ㅣ Doob Gourmand ep.2",
|
||||
length: Some(664),
|
||||
|
|
@ -382,7 +393,7 @@ Paginator(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -394,15 +405,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("8 months ago"),
|
||||
view_count: 774061,
|
||||
view_count: Some(774061),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "Stay on for bloopers! Vlog coming on Tuesday!! Location 의천각 Uicheongag 수정구 신흥동 6907번지 성남시 경기도 KR\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("Stay on for bloopers! Vlog coming on Tuesday!! Location 의천각 Uicheongag 수정구 신흥동 6907번지 성남시 경기도 KR\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "35Gu3Q6qEn4",
|
||||
title: "Deal Breakers",
|
||||
length: Some(60),
|
||||
|
|
@ -413,7 +425,7 @@ Paginator(
|
|||
height: 480,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -425,15 +437,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("8 months ago"),
|
||||
view_count: 12314192,
|
||||
view_count: Some(12314192),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
short_description: "shorts another deal breaker: people who like chocolate chip banana bread over regular-- you heard me Recipe: Wet: 3 very ripe\u{a0}...",
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("shorts another deal breaker: people who like chocolate chip banana bread over regular-- you heard me Recipe: Wet: 3 very ripe\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "JoUdBrUpBN0",
|
||||
title: "Jjambbong, jjajangmyeon\'s biggest rival",
|
||||
length: Some(56),
|
||||
|
|
@ -444,7 +457,7 @@ Paginator(
|
|||
height: 480,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -456,15 +469,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 year ago"),
|
||||
view_count: 4266748,
|
||||
view_count: Some(4266748),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
short_description: "shorts Recipe on my website at www.doobydobap.com/recipe.",
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("shorts Recipe on my website at www.doobydobap.com/recipe."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "l76ovWsPLi8",
|
||||
title: "Jjagglee, Ricotta Persimmon Toast, Plants, and Pringles! l Home Alone All Day Vlog",
|
||||
length: Some(673),
|
||||
|
|
@ -480,7 +494,7 @@ Paginator(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -492,15 +506,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("9 months ago"),
|
||||
view_count: 439888,
|
||||
view_count: Some(439888),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "Ingredients for jjaglee 1 cup pork belly 1 cup fermented kimchi ½ onion 1 leek 1 firm tofu 1.5 tbsp gochujang 2 tbsp coarse\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("Ingredients for jjaglee 1 cup pork belly 1 cup fermented kimchi ½ onion 1 leek 1 firm tofu 1.5 tbsp gochujang 2 tbsp coarse\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "zt1Lx9L619w",
|
||||
title: "The biggest privilege my rich friends have",
|
||||
length: Some(58),
|
||||
|
|
@ -511,7 +526,7 @@ Paginator(
|
|||
height: 480,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -523,14 +538,16 @@ Paginator(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: 9312774,
|
||||
view_count: Some(9312774),
|
||||
is_live: false,
|
||||
is_short: true,
|
||||
short_description: "shorts #japanese #curry Tomato Beef Curry 1 packet Japanese Curry Roux 250g thinly sliced beef 2 large onions 2 tbsp butter 2\u{a0}...",
|
||||
is_short: false,
|
||||
is_upcoming: false,
|
||||
short_description: Some("shorts #japanese #curry Tomato Beef Curry 1 packet Japanese Curry Roux 250g thinly sliced beef 2 large onions 2 tbsp butter 2\u{a0}..."),
|
||||
)),
|
||||
],
|
||||
ctoken: Some("EpMDEgpkb29ieWRvYmFwGoQDU0NpQ0FRdE9OVUZMVVdac1N6RlVWWUlCQzA5NlNVWkJURkZmV1hSQmdnRUxjako1WlRaNlZ6QnVZazJDQVF0NldVaENNemhWYkhwRk1JSUJDMGQyZFhSbWJWY3lOa3BSZ2dFTFVuSnZXWEJNZUhoT2FsbUNBUXRzTkRkUmRYVmtjMW96TklJQkMyZExMV3BNYm5aV2MySXdnZ0VMVG5Wa1ZHSnZNa05LVFZtQ0FRdE9ZekJJZW5sRVVtcHRNSUlCQzNCMlUxZEliVFIzYkhoWmdnRUxaa2RSVlZkSk5HOWZYMEdDQVF0UWVFZHRVRFIyWDBFek9JSUJDMGQxZVVkNWVscGpkVzFKZ2dFTE5sWkhSekU1VnpBNFZWR0NBUXR3TTFob2VEWmhVVVZZYjRJQkN6TTFSM1V6VVRaeFJXNDBnZ0VMU205VlpFSnlWWEJDVGpDQ0FRdHNOelp2ZGxkelVFeHBPSUlCQzNwME1VeDRPVXcyTVRsM3NnRUdDZ1FJSnhBRBiB4OgYIgtzZWFyY2gtZmVlZA%3D%3D"),
|
||||
endpoint: browse,
|
||||
)
|
||||
|
|
@ -3110,6 +3110,7 @@ Playlist(
|
|||
),
|
||||
],
|
||||
ctoken: Some("4qmFsgJhEiRWTFBMNWREeDY4MVQ0YlI3WkYxSXVXek92MW9tbFJiRTdQaUoaFENBRjZCbEJVT2tOSFdRJTNEJTNEmgIiUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSg%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
video_count: 495,
|
||||
thumbnail: [
|
||||
|
|
|
|||
|
|
@ -2056,6 +2056,7 @@ Playlist(
|
|||
),
|
||||
],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
video_count: 66,
|
||||
thumbnail: [
|
||||
|
|
|
|||
|
|
@ -3017,6 +3017,7 @@ Playlist(
|
|||
),
|
||||
],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
video_count: 97,
|
||||
thumbnail: [
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ SearchResult(
|
|||
items: Paginator(
|
||||
count: Some(7499),
|
||||
items: [
|
||||
Channel(SearchChannel(
|
||||
Channel(ChannelItem(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -26,7 +26,7 @@ SearchResult(
|
|||
video_count: 219,
|
||||
short_description: "Hi, I\'m Tina, aka Doobydobap! Food is the medium I use to tell stories and connect with people who share the same passion as I\u{a0}...",
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "1VW7iXRIrc8",
|
||||
title: "Alone, in the City of Love",
|
||||
length: Some(1875),
|
||||
|
|
@ -42,7 +42,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -54,15 +54,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: 531580,
|
||||
view_count: Some(531580),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "I know it\'s a little long, but I hope you enjoyed this Paris vlog :} Location Udon Restaurant: Sanukiya 9 Rue d\'Argenteuil, Paris\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("I know it\'s a little long, but I hope you enjoyed this Paris vlog :} Location Udon Restaurant: Sanukiya 9 Rue d\'Argenteuil, Paris\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "9NuhKCv3crg",
|
||||
title: "the end.",
|
||||
length: Some(982),
|
||||
|
|
@ -78,7 +79,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -90,15 +91,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 days ago"),
|
||||
view_count: 974475,
|
||||
view_count: Some(974475),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "or the start of something new~~~~~ Thank you for your patience on the vlog, it took some time to adjust to my new normal. Excited\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("or the start of something new~~~~~ Thank you for your patience on the vlog, it took some time to adjust to my new normal. Excited\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "hGbQ2WM9nOo",
|
||||
title: "Why does everything bad for you taste good ㅣ CHILI OIL RAMEN",
|
||||
length: Some(428),
|
||||
|
|
@ -114,7 +116,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -126,15 +128,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 1034415,
|
||||
view_count: Some(1034415),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "https://partner.bokksu.com/doobydobap use code DOOBYDOBAP to get $15 off your first bokksu order! Instagram @doobydobap\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("https://partner.bokksu.com/doobydobap use code DOOBYDOBAP to get $15 off your first bokksu order! Instagram @doobydobap\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "PxGmP4v_A38",
|
||||
title: "Alone and Thriving l late night korean convenience store, muji kitchenware haul, spring cleaning!",
|
||||
length: Some(1437),
|
||||
|
|
@ -150,7 +153,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -162,15 +165,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 831908,
|
||||
view_count: Some(831908),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "I could palpably feel how I\'m so much happier than before when I was reviewing my footage All the finalized recipes will be\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("I could palpably feel how I\'m so much happier than before when I was reviewing my footage All the finalized recipes will be\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "38Gd6TdmNVs",
|
||||
title: "KOREAN BARBECUE l doob gourmand ep.3",
|
||||
length: Some(525),
|
||||
|
|
@ -186,7 +190,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -198,15 +202,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 weeks ago"),
|
||||
view_count: 354486,
|
||||
view_count: Some(354486),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "I haven\'t done a doob gourmand series in so so long! I hope you enjoyed it, let me know what kind of food you\'re interested in\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("I haven\'t done a doob gourmand series in so so long! I hope you enjoyed it, let me know what kind of food you\'re interested in\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "CutR_1SDDzY",
|
||||
title: "feels good to be back",
|
||||
length: Some(1159),
|
||||
|
|
@ -222,7 +227,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -234,15 +239,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("1 month ago"),
|
||||
view_count: 524950,
|
||||
view_count: Some(524950),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "I missed you guys. Happy to see you guys back. I\'ve really been working on my mental health, educating myself with different food\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("I missed you guys. Happy to see you guys back. I\'ve really been working on my mental health, educating myself with different food\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "pRVSdUxdsVw",
|
||||
title: "Repairing...",
|
||||
length: Some(965),
|
||||
|
|
@ -258,7 +264,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -270,15 +276,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 weeks ago"),
|
||||
view_count: 528595,
|
||||
view_count: Some(528595),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "The word repair stems from the Latin word reparare, from re- \'back\' and parare \'make ready.\' And I feel that\'s exactly how I feel\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("The word repair stems from the Latin word reparare, from re- \'back\' and parare \'make ready.\' And I feel that\'s exactly how I feel\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "KUz7oArksR4",
|
||||
title: "running away",
|
||||
length: Some(1023),
|
||||
|
|
@ -294,7 +301,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -306,15 +313,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 717515,
|
||||
view_count: Some(717515),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "for now... more adventures to come! Music by Mark Generous - A Summer Day - https://thmatc.co/?l=CF6C5FFF Instagram\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("for now... more adventures to come! Music by Mark Generous - A Summer Day - https://thmatc.co/?l=CF6C5FFF Instagram\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "sPb2gyN-hnE",
|
||||
title: "worth fighting for",
|
||||
length: Some(1232),
|
||||
|
|
@ -330,7 +338,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -342,15 +350,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("2 months ago"),
|
||||
view_count: 624386,
|
||||
view_count: Some(624386),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "Please be respectful in the comments section! I will not be tolerating any hateful/derogatory speech *barking noise* Music\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("Please be respectful in the comments section! I will not be tolerating any hateful/derogatory speech *barking noise* Music\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "rriwHj8U664",
|
||||
title: "my seoul apartment tour",
|
||||
length: Some(721),
|
||||
|
|
@ -366,7 +375,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -378,15 +387,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 696942,
|
||||
view_count: Some(696942),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "Korea has an interesting rent structure called junseh where you pay a higher security deposit in turn for lower rent! And before\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("Korea has an interesting rent structure called junseh where you pay a higher security deposit in turn for lower rent! And before\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "PXsK9-CFoH4",
|
||||
title: "waiting...",
|
||||
length: Some(1455),
|
||||
|
|
@ -402,7 +412,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -414,15 +424,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 923749,
|
||||
view_count: Some(923749),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "tuna kimchi jook 2 cups cooked rice 3 cups water 1 cup kimchi 320g canned tuna 1 tbsp perilla seed oil 1 onion 1 tbsp gochujang\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("tuna kimchi jook 2 cups cooked rice 3 cups water 1 cup kimchi 320g canned tuna 1 tbsp perilla seed oil 1 onion 1 tbsp gochujang\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "bXbmYelTnhw",
|
||||
title: "Doobydobap rates British desserts!",
|
||||
length: Some(865),
|
||||
|
|
@ -438,7 +449,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCOgGAfSUy5LvEyVS_LF5kdw",
|
||||
name: "JOLLY",
|
||||
avatar: [
|
||||
|
|
@ -450,15 +461,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: 1282467,
|
||||
view_count: Some(1282467),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "Today we introduce @Doobydobap to the best of British desserts! Massive thanks to Dooby for joining us for this episode.",
|
||||
is_upcoming: false,
|
||||
short_description: Some("Today we introduce @Doobydobap to the best of British desserts! Massive thanks to Dooby for joining us for this episode."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "0onVbAuBGWI",
|
||||
title: "Out of Control",
|
||||
length: Some(1125),
|
||||
|
|
@ -474,7 +486,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -486,15 +498,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("8 months ago"),
|
||||
view_count: 1649656,
|
||||
view_count: Some(1649656),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "Hey doobies, I know I promised a cookie recipe in my last vlog, but I haven\'t yet developed one of my own just yet-- still recipe\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("Hey doobies, I know I promised a cookie recipe in my last vlog, but I haven\'t yet developed one of my own just yet-- still recipe\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "FKJtrUeol3o",
|
||||
title: "with quantity comes quality",
|
||||
length: Some(1140),
|
||||
|
|
@ -510,7 +523,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -522,15 +535,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: 1085725,
|
||||
view_count: Some(1085725),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "A busy, but calm week for me here in Seoul living alone. Planning on exploring more parts of Korea, please let me know in the\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("A busy, but calm week for me here in Seoul living alone. Planning on exploring more parts of Korea, please let me know in the\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "dkMtSrjDLO0",
|
||||
title: "How to make Naruto\'s favorite ramen",
|
||||
length: Some(802),
|
||||
|
|
@ -546,7 +560,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -558,15 +572,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("10 months ago"),
|
||||
view_count: 1327833,
|
||||
view_count: Some(1327833),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "Broth * 1 large chicken * 1 leek & ½ onion charred * 1 leek & ½ onion * 1 tbsp ginger * 6 garlic cloves Tare * leftover cha shu\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("Broth * 1 large chicken * 1 leek & ½ onion charred * 1 leek & ½ onion * 1 tbsp ginger * 6 garlic cloves Tare * leftover cha shu\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "r2ye6zW0nbM",
|
||||
title: "a wedding",
|
||||
length: Some(1207),
|
||||
|
|
@ -582,7 +597,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -594,15 +609,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: 1052801,
|
||||
view_count: Some(1052801),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "Ginger Pork Recipe! https://doobydobap.com/recipe/ginger-pork-shogayaki - Instagram @doobydobap Join my discord!",
|
||||
is_upcoming: false,
|
||||
short_description: Some("Ginger Pork Recipe! https://doobydobap.com/recipe/ginger-pork-shogayaki - Instagram @doobydobap Join my discord!"),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "NudTbo2CJMY",
|
||||
title: "Flying to London",
|
||||
length: Some(1078),
|
||||
|
|
@ -618,7 +634,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -630,15 +646,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: 1137136,
|
||||
view_count: Some(1137136),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "Tomato Beef Curry 1 packet Japanese Curry Roux 250g thinly sliced beef 2 large onions 2 tbsp butter 2 tbsp neutral oil 1 can\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("Tomato Beef Curry 1 packet Japanese Curry Roux 250g thinly sliced beef 2 large onions 2 tbsp butter 2 tbsp neutral oil 1 can\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "gK-jLnvVsb0",
|
||||
title: "Contradicting myself",
|
||||
length: Some(1381),
|
||||
|
|
@ -654,7 +671,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -666,15 +683,16 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("8 months ago"),
|
||||
view_count: 928967,
|
||||
view_count: Some(928967),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "Sesame Granola Recipe 2 cups old-fashioned instant oats 2 cups mixture of seeds / nuts of your choice (I used ½ cup each of\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("Sesame Granola Recipe 2 cups old-fashioned instant oats 2 cups mixture of seeds / nuts of your choice (I used ½ cup each of\u{a0}..."),
|
||||
)),
|
||||
Video(SearchVideo(
|
||||
Video(VideoItem(
|
||||
id: "fAFFTOpUNWo",
|
||||
title: "Come Grocery Shopping with Me",
|
||||
length: Some(1126),
|
||||
|
|
@ -690,7 +708,7 @@ SearchResult(
|
|||
height: 404,
|
||||
),
|
||||
],
|
||||
channel: ChannelTag(
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
||||
name: "Doobydobap",
|
||||
avatar: [
|
||||
|
|
@ -702,16 +720,18 @@ SearchResult(
|
|||
],
|
||||
verification: verified,
|
||||
subscriber_count: None,
|
||||
),
|
||||
)),
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("8 months ago"),
|
||||
view_count: 1077297,
|
||||
view_count: Some(1077297),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
short_description: "Pecan Banana Bread with Coffee Liquor Recipe https://doobydobap.com/recipe/pecan-banana-bread-with-coffee-liquor Music\u{a0}...",
|
||||
is_upcoming: false,
|
||||
short_description: Some("Pecan Banana Bread with Coffee Liquor Recipe https://doobydobap.com/recipe/pecan-banana-bread-with-coffee-liquor Music\u{a0}..."),
|
||||
)),
|
||||
],
|
||||
ctoken: Some("EqsDEgpkb29ieWRvYmFwGpwDU0JTQ0FSaFZRMmc0WjBoa2RIcFBNblJZWkRVNU0xOWlha1Z5VjJlQ0FRc3hWbGMzYVZoU1NYSmpPSUlCQ3psT2RXaExRM1l6WTNKbmdnRUxhRWRpVVRKWFRUbHVUMi1DQVF0UWVFZHRVRFIyWDBFek9JSUJDek00UjJRMlZHUnRUbFp6Z2dFTFEzVjBVbDh4VTBSRWVsbUNBUXR3VWxaVFpGVjRaSE5XZDRJQkMwdFZlamR2UVhKcmMxSTBnZ0VMYzFCaU1tZDVUaTFvYmtXQ0FRdHljbWwzU0dvNFZUWTJOSUlCQzFCWWMwczVMVU5HYjBnMGdnRUxZbGhpYlZsbGJGUnVhSGVDQVFzd2IyNVdZa0YxUWtkWFNZSUJDMFpMU25SeVZXVnZiRE52Z2dFTFpHdE5kRk55YWtSTVR6Q0NBUXR5TW5sbE5ucFhNRzVpVFlJQkMwNTFaRlJpYnpKRFNrMVpnZ0VMWjBzdGFreHVkbFp6WWpDQ0FRdG1RVVpHVkU5d1ZVNVhiN0lCQmdvRUNCY1FBZyUzRCUzRBiB4OgYIgtzZWFyY2gtZmVlZA%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
corrected_query: Some("doobydobap"),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ SearchResult(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
corrected_query: None,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ SearchResult(
|
|||
items: Paginator(
|
||||
count: Some(18932046),
|
||||
items: [
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "RDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8",
|
||||
name: "Pop\'s Biggest Hits",
|
||||
thumbnail: [
|
||||
|
|
@ -31,21 +31,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 225,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "XfEMj-z3TtA",
|
||||
title: "STAY",
|
||||
length: Some(142),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "MozAXGgC1Mc",
|
||||
title: "Sugar",
|
||||
length: Some(236),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(225),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "RDCLAK5uy_mVJ3RRi_YBfUJnZnQxLAedQQcXHujbUcg",
|
||||
name: "Pump-Up Pop",
|
||||
thumbnail: [
|
||||
|
|
@ -70,21 +65,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 100,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "J7p4bzqLvCw",
|
||||
title: "Blinding Lights",
|
||||
length: Some(202),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "G1ej5up7JG0",
|
||||
title: "Shivers",
|
||||
length: Some(208),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(100),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI",
|
||||
name: "Happy Pop Hits",
|
||||
thumbnail: [
|
||||
|
|
@ -109,21 +99,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 59,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "52QG9C9dnLM",
|
||||
title: "Better Days",
|
||||
length: Some(161),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "ntG3GQdY_Ok",
|
||||
title: "Light Switch",
|
||||
length: Some(186),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(59),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "RDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA",
|
||||
name: "Pop Gold",
|
||||
thumbnail: [
|
||||
|
|
@ -148,21 +133,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 100,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "XqoanTj5pNY",
|
||||
title: "Someone Like You",
|
||||
length: Some(286),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "th92jw2CFOA",
|
||||
title: "When I Was Your Man",
|
||||
length: Some(214),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(100),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "RDCLAK5uy_lb6CVU6S4uVugLVNTU9WhqfaomWAgnho4",
|
||||
name: "Shout-Out Pop Hits",
|
||||
thumbnail: [
|
||||
|
|
@ -187,21 +167,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 50,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "cTr-aGK-LpA",
|
||||
title: "My Head & My Heart",
|
||||
length: Some(175),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "xn0-IZZ6YO4",
|
||||
title: "abcdefu",
|
||||
length: Some(169),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(50),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "RDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg",
|
||||
name: "Mellow Pop Classics",
|
||||
thumbnail: [
|
||||
|
|
@ -226,21 +201,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 50,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "fdz_cabS9BU",
|
||||
title: "Thinking out Loud",
|
||||
length: Some(282),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "BRbTpCrHv4o",
|
||||
title: "Broken Strings",
|
||||
length: Some(251),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(50),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "PLDIoUOhQQPlVr3qepMVRsDe4T8vNQsvno",
|
||||
name: "Türkçe Pop Şarkılar 2022 - Yeni Hit Şarkılar 2022",
|
||||
thumbnail: [
|
||||
|
|
@ -265,21 +235,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 220,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "zU2_jPxz9q4",
|
||||
title: "Ara - Zeynep Bastık (Paro Official ZB Version) | Music Video",
|
||||
length: Some(201),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "vHIf_Gk8GLg",
|
||||
title: "Mustafa Ceceli & Indira Elemes - İlla",
|
||||
length: Some(153),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCX9oPuvJYZsG8wnHTwOBVPA",
|
||||
name: "Chillax",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(220),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk",
|
||||
name: "Dance-Pop Bangers",
|
||||
thumbnail: [
|
||||
|
|
@ -304,21 +269,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 100,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "hJWSZDJb-W4",
|
||||
title: "Bad Habits",
|
||||
length: Some(231),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "c5l4CGQozWY",
|
||||
title: "Work from Home",
|
||||
length: Some(215),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(100),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "RDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY",
|
||||
name: "Laid-Back Sofa Pop",
|
||||
thumbnail: [
|
||||
|
|
@ -343,21 +303,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 67,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "T7iuw9Qx7t4",
|
||||
title: "Astronomy",
|
||||
length: Some(244),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "p-IXgwqhfmg",
|
||||
title: "Love Yourself",
|
||||
length: Some(234),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(67),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "RDCLAK5uy_mHW5bcduhjB-PkTePAe6EoRMj1xNT8gzY",
|
||||
name: "K-Pop Girl Crush",
|
||||
thumbnail: [
|
||||
|
|
@ -382,21 +337,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 78,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "18nDrsoii5M",
|
||||
title: "붐바야 (Boombayah)",
|
||||
length: Some(241),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "miqQAzOXPBo",
|
||||
title: "달라달라 DALLA DALLA",
|
||||
length: Some(200),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(78),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI",
|
||||
name: "Cardio Pop",
|
||||
thumbnail: [
|
||||
|
|
@ -421,21 +371,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 80,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "G1ej5up7JG0",
|
||||
title: "Shivers",
|
||||
length: Some(208),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "vgn-b0ksX4g",
|
||||
title: "Heaven Takes You Home",
|
||||
length: Some(215),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(80),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "PLI_7Mg2Z_-4Lf7IYeiTEOV8HBn-nMqz5N",
|
||||
name: "Pop 2022 ♫ Mix Pop En Ingles (English Pop Songs 2022)",
|
||||
thumbnail: [
|
||||
|
|
@ -460,21 +405,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 70,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "a7GITgqwDVg",
|
||||
title: "Charlie Puth - Left And Right (feat. Jung Kook of BTS) [Official Video]",
|
||||
length: Some(160),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "H5v3kku4y6Q",
|
||||
title: "Harry Styles - As It Was (Official Video)",
|
||||
length: Some(166),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC8Ojfs-1VLiAO_MosLwvjpQ",
|
||||
name: "Redlist - Ultimate Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(70),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "PLX6L4t7t6ZanfCJ1wBxRdGZ_mk9ygmKqo",
|
||||
name: "Deutsch Pop Hits NEU 2022",
|
||||
thumbnail: [
|
||||
|
|
@ -499,21 +439,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 164,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "oE7Fe8QBw1Y",
|
||||
title: "Johannes Oerding - Kaleidoskop",
|
||||
length: Some(217),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "JvqMO-tWlrU",
|
||||
title: "Tim Bendzko - DAS LEBEN WIEDER LIEBEN (Offizielles Musikvideo)",
|
||||
length: Some(169),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCesP91XKnuZVd6OJN06hokg",
|
||||
name: "Startup Records",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(164),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "PLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj",
|
||||
name: "Pop Music Playlist - Timeless Pop Songs (Updated Weekly 2022)",
|
||||
thumbnail: [
|
||||
|
|
@ -538,21 +473,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 200,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "U0CGsw6h60k",
|
||||
title: "Rihanna - What\'s My Name? ft. Drake",
|
||||
length: Some(265),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "OPf0YbXqDm0",
|
||||
title: "Mark Ronson - Uptown Funk (Official Video) ft. Bruno Mars",
|
||||
length: Some(271),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCs72iRpTEuwV3y6pdWYLgiw",
|
||||
name: "Redlist - Just Hits",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(200),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "PLgRdph0qPLy53IhYrQLPpATDDA2TpFey5",
|
||||
name: "Teen-Pop 90-2000",
|
||||
thumbnail: [
|
||||
|
|
@ -577,21 +507,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 50,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "4fndeDfaWCg",
|
||||
title: "Backstreet Boys - I Want It That Way (Official HD Video)",
|
||||
length: Some(220),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "gJLIiF15wjQ",
|
||||
title: "Spice Girls - Wannabe (Official Music Video)",
|
||||
length: Some(236),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCv9O2E_G8U46Paz8828THJw",
|
||||
name: "Victor Vaz",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(50),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "RDCLAK5uy_nCVF_zUZizzRcojIUuYmaXxMoPgg2WMDo",
|
||||
name: "Klangfarbe: German Pop Hits",
|
||||
thumbnail: [
|
||||
|
|
@ -616,21 +541,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 52,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "jBFcbfteBDU",
|
||||
title: "Ich hass dich",
|
||||
length: Some(194),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "CjV7rkhQ66I",
|
||||
title: "ROSES",
|
||||
length: Some(148),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(52),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "RDCLAK5uy_lY6JFrs7W9yIhFjUN_yxQ_ubkjcrqQaVs",
|
||||
name: "Bedroom Pop",
|
||||
thumbnail: [
|
||||
|
|
@ -655,21 +575,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 178,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "r23tQvESL7w",
|
||||
title: "Picture in my mind",
|
||||
length: Some(177),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "4DyV0hWOdQw",
|
||||
title: "we fell in love in october",
|
||||
length: Some(185),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(178),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "RDCLAK5uy_l7K78k4EkjcFojhd1617rmUjY-aet6-t0",
|
||||
name: "K-Pop Party Hits",
|
||||
thumbnail: [
|
||||
|
|
@ -694,21 +609,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 87,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "LCpjdohpuEE",
|
||||
title: "Permission to Dance",
|
||||
length: Some(188),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "8mA6jIeojnk",
|
||||
title: "How You Like That",
|
||||
length: Some(182),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(87),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "RDCLAK5uy_lj-zBExVYl7YN_NxXboDIh4A-wKGfgzNY",
|
||||
name: "I-Pop Hits!",
|
||||
thumbnail: [
|
||||
|
|
@ -733,21 +643,16 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 50,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "g-7u06NK1mo",
|
||||
title: "Killer Haseena",
|
||||
length: Some(161),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "v0Q56geMlkk",
|
||||
title: "Kesariyo Rang",
|
||||
length: Some(194),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
|
||||
name: "YouTube Music",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(50),
|
||||
)),
|
||||
Playlist(SearchPlaylist(
|
||||
Playlist(PlaylistItem(
|
||||
id: "PLDIoUOhQQPlXqz5QZ3dx-lh_p6RcPeKjv",
|
||||
name: "POP Music Playlist 2022 - New POP Songs - Pop Songs 2022 Playlist",
|
||||
thumbnail: [
|
||||
|
|
@ -772,22 +677,18 @@ SearchResult(
|
|||
height: 188,
|
||||
),
|
||||
],
|
||||
video_count: 100,
|
||||
first_videos: [
|
||||
SearchPlaylistVideo(
|
||||
id: "WcIcVapfqXw",
|
||||
title: "Rema, Selena Gomez - Calm Down (Official Music Video)",
|
||||
length: Some(240),
|
||||
),
|
||||
SearchPlaylistVideo(
|
||||
id: "a7GITgqwDVg",
|
||||
title: "Charlie Puth - Left And Right (feat. Jung Kook of BTS) [Official Video]",
|
||||
length: Some(160),
|
||||
),
|
||||
],
|
||||
channel: Some(ChannelTag(
|
||||
id: "UCX9oPuvJYZsG8wnHTwOBVPA",
|
||||
name: "Chillax",
|
||||
avatar: [],
|
||||
verification: none,
|
||||
subscriber_count: None,
|
||||
)),
|
||||
video_count: Some(100),
|
||||
)),
|
||||
],
|
||||
ctoken: Some("EqIJEgNwb3AamglFZ0lRQTBnVWdnRXJVa1JEVEVGTE5YVjVYMjV0VXpOWmIzaFRkMVpXVVdzNWJFVlJTakJWV0RSYVEycFljMWRmY0hOVk9JSUJLMUpFUTB4QlN6VjFlVjl0VmtvelVsSnBYMWxDWmxWS2JscHVVWGhNUVdWa1VWRmpXRWgxYW1KVlkyZUNBU3RTUkVOTVFVczFkWGxmYldaa2NYWkRRV3c0ZDI5a2JIZ3lVREpmUVdreVowNXJhVkpFUVhWbWEydEpnZ0VyVWtSRFRFRkxOWFY1WDI1SVUzRkRTbXBFY2xjNVNFSm9RMDVrUmpaMFYxQmtiazlOYm1kUGRqQjNRWUlCSzFKRVEweEJTelYxZVY5c1lqWkRWbFUyVXpSMVZuVm5URlpPVkZVNVYyaHhabUZ2YlZkQloyNW9ielNDQVN0U1JFTk1RVXMxZFhsZmJrUk1PRXRsUW5KVllXZDNlVWxUZDA1dGVVVnBVMlpaWjNveFoxWkRaWE5uZ2dFaVVFeEVTVzlWVDJoUlVWQnNWbkl6Y1dWd1RWWlNjMFJsTkZRNGRrNVJjM1p1YjRJQksxSkVRMHhCU3pWMWVWOXVabk5mZERSR1ZYVXdNRVUxUlVRMmJIWmxSVUpDV0RGV1RWbGxNVzFHYW11Q0FTdFNSRU5NUVVzMWRYbGZiVjh3VlRWV1VVNTVlWHAzZDBneGJGSnBOMk5RUVVGSFdIRk9VVzVCVDNGWmdnRXJVa1JEVEVGTE5YVjVYMjFJVnpWaVkyUjFhR3BDTFZCclZHVlFRV1UyUlc5U1RXb3hlRTVVT0dkNldZSUJLMUpFUTB4QlN6VjFlVjlyVUhGS1gwWnBSMnN0YkdKWWRHZE5ORWxHTkRKMWIydHphMU5LV21sV1ZFbUNBU0pRVEVsZk4wMW5NbHBmTFRSTVpqZEpXV1ZwVkVWUFZqaElRbTR0YmsxeGVqVk9nZ0VpVUV4WU5rdzBkRGQwTmxwaGJtWkRTakYzUW5oU1pFZGFYMjFyT1hsbmJVdHhiNElCSWxCTVRVTTVTMDVyU1c1alMzUlFlbWRaTFRWeWJXaDJhamRtWVhnNFptUjRiMnFDQVNKUVRHZFNaSEJvTUhGUVRIazFNMGxvV1hKUlRGQndRVlJFUkVFeVZIQkdaWGsxZ2dFclVrUkRURUZMTlhWNVgyNURWa1pmZWxWYWFYcDZVbU52YWtsVmRWbHRZVmg0VFc5UVoyY3lWMDFFYjRJQksxSkVRMHhCU3pWMWVWOXNXVFpLUm5Kek4xYzVlVWxvUm1wVlRsOTVlRkZmZFdKcmFtTnljVkZoVm5PQ0FTdFNSRU5NUVVzMWRYbGZiRGRMTnpock5FVnJhbU5HYjJwb1pERTJNVGR5YlZWcVdTMWhaWFEyTFhRd2dnRXJVa1JEVEVGTE5YVjVYMnhxTFhwQ1JYaFdXV3czV1U1ZlRuaFlZbTlFU1dnMFFTMTNTMGRtWjNwT1dZSUJJbEJNUkVsdlZVOW9VVkZRYkZoeGVqVlJXak5rZUMxc2FGOXdObEpqVUdWTGFuYXlBUVlLQkFnVkVBSSUzRBiB4OgYIgtzZWFyY2gtZmVlZA%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
corrected_query: None,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -759,4 +759,5 @@ Paginator(
|
|||
],
|
||||
ctoken: Some("4qmFsgKbAxIPRkV3aGF0X3RvX3dhdGNoGuoCQ0JoNmlBSk5aMjlKYjB0NmVtOWlTR3hxVFRSdlYyMHdTMkYzYjFwbFdGSm1ZMGRHYmxwV09YcGliVVozWXpKb2RtUkdPWGxhVjJSd1lqSTFhR0pDU1daWFZFSXhUbFpuZDFSV09YSldNRlp0WkRCT1JWTlZPV3BsU0U1WFZHNWtiRXhWY0ZSa1ZrSlRXbmh2ZEVGQlFteGlaMEZDVmxaTlFVRlZVa1pCUVVWQlVtdFdNMkZIUmpCWU0xSjJXRE5rYUdSSFRtOUJRVVZCUVZGRlFVRkJSVUZCVVVGQlFWRkZRVmxyUlVsQlFrbFVZMGRHYmxwV09YcGliVVozWXpKb2RtUkdPVEJpTW5Sc1ltaHZWRU5MVDNJeFpuSjROR1p2UTBaU1YwSm1RVzlrVkZWSlN6RnBTVlJEUzA5eU1XWnllRFJtYjBOR1VsZENaa0Z2WkZSVlNVc3hkbkZqZURjd1NrRm5aMW8lM0SaAhpicm93c2UtZmVlZEZFd2hhdF90b193YXRjaA%3D%3D"),
|
||||
visitor_data: Some("CgtjTXNGWnhNcjdORSiq8qmaBg%3D%3D"),
|
||||
endpoint: browse,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -856,4 +856,5 @@ Paginator(
|
|||
),
|
||||
],
|
||||
ctoken: Some("4qmFsgKxAxIPRkV3aGF0X3RvX3dhdGNoGoADQ0RCNmxnSkhUWFpRYzJOVU1UUm1iME5OWjNOSmQzWjZOM0JPWlZWMldqZDFRVlp3ZEVOdGMwdEhXR3d3V0ROQ2FGb3lWbVpqTWpWb1kwaE9iMkl6VW1aamJWWnVZVmM1ZFZsWGQxTklNVlUwVDFSU1dXUXhUbXhXTTBaeVdsaGtSRkpGYkZCWk0yaDZWbXMxTlV4VmVGbE1XRnBSVlcxallVeFJRVUZhVnpSQlFWWldWRUZCUmtWU1VVRkNRVVZhUm1ReWFHaGtSamt3WWpFNU0xbFlVbXBoUVVGQ1FVRkZRa0ZCUVVKQlFVVkJRVUZGUWtGSFNrSkRRVUZUUlROQ2FGb3lWbVpqTWpWb1kwaE9iMkl6VW1aa1J6bHlXbGMwWVVWM2Ftb3hPRkJGT1dWSU5rRm9WVlpZWlVGTFNGaHVSMEp2ZDJsRmQycERObkZmUlRsbFNEWkJhRmRIZG1RMFMwaGxaMGhDTlZnMmJrMWxPVU5SU1VsTlVRJTNEJTNEmgIaYnJvd3NlLWZlZWRGRXdoYXRfdG9fd2F0Y2g%3D"),
|
||||
endpoint: browse,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -86,6 +87,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -128,6 +130,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -173,6 +176,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -214,6 +218,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -255,6 +260,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -296,6 +302,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -337,6 +344,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -378,6 +386,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -419,6 +428,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -460,6 +470,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -501,6 +512,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -542,6 +554,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -583,6 +596,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -624,6 +638,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -665,6 +680,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -706,6 +722,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -747,6 +764,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -754,4 +772,5 @@ Paginator(
|
|||
),
|
||||
],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyiwEKT0FEU0pfaTBhMTViQk5vTE9UTHFhUTBoZHB4VTN5SUdfYmhQTzhzM1pGQXQybzdnaVMwajVoSkRNSTl5MGs5M2l4SkM5VGdSbHBVa0xxQ0EiESILWmVlcnJudUxpNUUwAXgBKBIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
|
||||
endpoint: browse,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ Paginator(
|
|||
count: Some(3),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyfhpLEhpVZ3djVTczT0JWOE9tU0JPS3J0NEFhQUJBZyICCAAqGFVDRWZfQmMtS1ZkN29uU2VpZlMzcHk5ZzILWmVlcnJudUxpNUVAAUgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3djVTczT0JWOE9tU0JPS3J0NEFhQUJBZw%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -85,6 +86,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -126,6 +128,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -167,6 +170,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -208,6 +212,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -254,6 +259,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -301,6 +307,7 @@ Paginator(
|
|||
count: Some(2),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyfhpLEhpVZ3puZDRLcVU1azhBN2F4QjdWNEFhQUJBZyICCAAqGFVDRWZfQmMtS1ZkN29uU2VpZlMzcHk5ZzILWmVlcnJudUxpNUVAAUgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3puZDRLcVU1azhBN2F4QjdWNEFhQUJBZw%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -342,6 +349,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -383,6 +391,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -424,6 +433,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -467,6 +477,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -508,6 +519,7 @@ Paginator(
|
|||
count: Some(2),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyfhpLEhpVZ3lUbFpfa2tYNnJydDV3S0VwNEFhQUJBZyICCAAqGFVDRWZfQmMtS1ZkN29uU2VpZlMzcHk5ZzILWmVlcnJudUxpNUVAAUgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3lUbFpfa2tYNnJydDV3S0VwNEFhQUJBZw%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -549,6 +561,7 @@ Paginator(
|
|||
count: Some(2),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyfhpLEhpVZ3lnM0Q5ZFVJRXJKNHlfTDJsNEFhQUJBZyICCAAqGFVDRWZfQmMtS1ZkN29uU2VpZlMzcHk5ZzILWmVlcnJudUxpNUVAAUgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3lnM0Q5ZFVJRXJKNHlfTDJsNEFhQUJBZw%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -590,6 +603,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -631,6 +645,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -672,6 +687,7 @@ Paginator(
|
|||
count: Some(1),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyfhpLEhpVZ3hZcVlrRkFnV2IzSmFUSFl0NEFhQUJBZyICCAAqGFVDRWZfQmMtS1ZkN29uU2VpZlMzcHk5ZzILWmVlcnJudUxpNUVAAUgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3hZcVlrRkFnV2IzSmFUSFl0NEFhQUJBZw%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -713,6 +729,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -754,6 +771,7 @@ Paginator(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -795,6 +813,7 @@ Paginator(
|
|||
count: Some(4),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyfhpLEhpVZ3pvWmY5bkc3VkJOaGNETFJGNEFhQUJBZyICCAAqGFVDRWZfQmMtS1ZkN29uU2VpZlMzcHk5ZzILWmVlcnJudUxpNUVAAUgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3pvWmY5bkc3VkJOaGNETFJGNEFhQUJBZw%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -838,6 +857,7 @@ Paginator(
|
|||
count: Some(1),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyfhpLEhpVZ3lNZXExV0RoU1lBSUozSlFoNEFhQUJBZyICCAAqGFVDRWZfQmMtS1ZkN29uU2VpZlMzcHk5ZzILWmVlcnJudUxpNUVAAUgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3lNZXExV0RoU1lBSUozSlFoNEFhQUJBZw%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
by_owner: false,
|
||||
pinned: false,
|
||||
|
|
@ -845,4 +865,5 @@ Paginator(
|
|||
),
|
||||
],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYy7QIKwwJnZXRfcmFua2VkX3N0cmVhbXMtLUNxY0JDSUFFRlJlMzBUZ2FuQUVLbHdFSTJGOFFnQVFZQnlLTUFidGhsd05sb1pHVEg0ZWRnUlVOc2dUX2pFRFYxOThSRmxGZFJTMVJiQ1hBUl9CTFNGREZKZ2FuS2FoMUVyeERGQU1xY1lnMThmSGdVSnBtZklqV2tER0FscUN1QzJLdU1FQjJYT25sVTZrd3ZBUjY5OHA2a2VGV3hLckxscGdtalZtelg4RHdPaDk1cGlMLVROOTl5YTZ1TDlpb0Y1LWc2Q3dqellGS1RPbnduRTF4V3lVSVdOUjlsRllZRUJRU0JRaUpJQmdBRWdVSWhpQVlBQklIQ0pjZ0VBOFlBUklGQ0lnZ0dBQVNCUWlISUJnQUVnY0loU0FRQnhnQkVnY0loQ0FRQkJnQkdBQSIRIgtaZWVycm51TGk1RTAAeAEoFEIQY29tbWVudHMtc2VjdGlvbg%3D%3D"),
|
||||
endpoint: browse,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -672,4 +672,5 @@ Paginator(
|
|||
),
|
||||
],
|
||||
ctoken: Some("CCgSExILWmVlcnJudUxpNUXAAQHIAQEYACrLDDJzNkw2d3l4Q1FxdUNRb0Q4ajRBQ2czQ1Bnb0l4LUM1djltdnBwZ3lDZ1B5UGdBS0RjSS1DZ2pxM0xYRXpkNk00VUVLQV9JLUFBb093ajRMQ1Bqc19JLUVsWTI5MWdFS0FfSS1BQW93MGo0dENpdFNSRU5NUVVzMWRYbGZhekkzZFhVdFJYUlJYMkkxVlRKeU1qWkVUa1JhVDIxT2NVZGtZMk5WU1VkUkNnUHlQZ0FLRHNJLUN3amZ2czJMbjRUcG5iUUJDZ1B5UGdBS0V0SS1Ed29OVWtSYVpXVnljbTUxVEdrMVJRb0Q4ajRBQ2c3Q1Bnc0kzYmJTdThMRy1wS1VBUW9EOGo0QUNnN0NQZ3NJX2JYd2lmQzJ0WlczQVFvRDhqNEFDZzdDUGdzSXpZckE3b0RHbzlMUUFRb0Q4ajRBQ2czQ1Bnb0l0N212dk9fUjVJUnZDZ1B5UGdBS0RjSS1DZ2lBcDdMWDBlYWxyaW9LQV9JLUFBb053ajRLQ0luanlmalZ0dUwxWHdvRDhqNEFDZzNDUGdvSXBKZmozYVR5X2MwZkNnUHlQZ0FLRGNJLUNnamJtNW1MbGRLQTV3Z0tBX0ktQUFvT3dqNExDTFRhOF9UNjE3U3UyQUVLQV9JLUFBb053ajRLQ05xMHBhdXZzS1BDZEFvRDhqNEFDZzdDUGdzSTVQR3E5WTIybWNXZ0FRb0Q4ajRBQ2c3Q1Bnc0lnNkdPN3JidzJjR0tBUW9EOGo0QUNnN0NQZ3NJenEtbWxQUy01SnJoQVFvRDhqNEFDZzdDUGdzSXZNbnBqSUtUeXBYX0FRb0Q4ajRBQ2czQ1Bnb0l1UFdDZ09mWDFmdFlDZ1B5UGdBS0g5SS1IQW9hVWtSRlRWUnVTbmxSZDJsamFHMW5lbm96VGxKSlVIVmxWMUVLQV9JLUFBb053ajRLQ0xxb251clN1SkhoWXdvRDhqNEFDZzNDUGdvSXFzYU90Y0RBZ3NNMkNnUHlQZ0FLRHNJLUN3amU2TUNidlp2Rmdza0JDZ1B5UGdBS0RjSS1DZ2oxa1p2aTM3cXRwelVLQV9JLUFBb053ajRLQ00tdHNlQ2lpOHpWRVFvRDhqNEFDZzNDUGdvSXJjU3kxYV9RdjV0U0NnUHlQZ0FLRHNJLUN3akw4ZXI0ZzRiVGhJRUJDZ1B5UGdBS0RjSS1DZ2oxdEsyRXFjVG0zd1FLQV9JLUFBb053ajRLQ012dG1aX2Fnb1NQSmdvRDhqNEFDZzNDUGdvSTVfYUJ1THJ0NS1jVkNnUHlQZ0FLRGNJLUNnaWUyWlhTNW9tU3duVUtBX0ktQUFvT3dqNExDSnFqbnFUcDY4LS1tQUVLQV9JLUFBb093ajRMQ1BqS291cnRsY09QdVFFS0FfSS1BQW9Od2o0S0NPT00tOHo4a196UGZ3b0Q4ajRBQ2czQ1Bnb0l6SWFhMFBtcGxKY3JDZ1B5UGdBS0RzSS1Dd2pMaXJmd2pfWGhwb0VCQ2dQeVBnQUtEY0ktQ2dpRG52dUVtdEczaWlvS0FfSS1BQW9Pd2o0TENPYWw2LXliX09PTXV3RVNLQUFDQkFZSUNnd09FQklVRmhnYUhCNGdJaVFtS0Nvc0xqQXlORFk0T2p3LVFFSkVSa2hLVEU0YUJBZ0FFQUVhQkFnQ0VBTWFCQWdFRUFVYUJBZ0dFQWNhQkFnSUVBa2FCQWdLRUFzYUJBZ01FQTBhQkFnT0VBOGFCQWdRRUJFYUJBZ1NFQk1hQkFnVUVCVWFCQWdXRUJjYUJBZ1lFQmthQkFnYUVCc2FCQWdjRUIwYUJBZ2VFQjhhQkFnZ0VDRWFCQWdpRUNNYUJBZ2tFQ1VhQkFnbUVDY2FCQWdvRUNrYUJBZ3FFQ3NhQkFnc0VDMGFCQWd1RUM4YUJBZ3dFREVhQkFneUVETWFCQWcwRURVYUJBZzJFRGNhQkFnNEVEa2FCQWc2RURzYUJBZzhFRDBhQkFnLUVEOGFCQWhBRUVFYUJBaENFRU1hQkFoRUVFVWFCQWhHRUVjYUJBaElFRWthQkFoS0VFc2FCQWhNRUUwYUJBaE9FRThxS0FBQ0JBWUlDZ3dPRUJJVUZoZ2FIQjRnSWlRbUtDb3NMakF5TkRZNE9qdy1RRUpFUmtoS1RFNGoPd2F0Y2gtbmV4dC1mZWVkcgA%3D"),
|
||||
endpoint: browse,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -701,15 +701,18 @@ VideoDetails(
|
|||
),
|
||||
],
|
||||
ctoken: Some("CBQSExILWmVlcnJudUxpNUXAAQHIAQEYACreBjJzNkw2d3pfQkFyOEJBb0Q4ajRBQ2czQ1Bnb0l5dFdIekt5Tm1ZMXBDZ1B5UGdBS0o5SS1KQW9pVUV4eU1UUldiR05sYkRKVE16UlpSMmw1WlZkRU1rOW9jbU4wVGt4Q1psVk9PUW9EOGo0QUNoTFNQZzhLRFZKRVdtVmxjbkp1ZFV4cE5VVUtBX0ktQUFvT3dqNExDTjIyMHJ2Q3h2cVNsQUVLQV9JLUFBb3cwajR0Q2l0U1JFTk1RVXMxZFhsZmF6STNkWFV0UlhSUlgySTFWVEp5TWpaRVRrUmFUMjFPY1Vka1kyTlZTVWRSQ2dQeVBnQUtEc0ktQ3dqZnZzMkxuNFRwbmJRQkNnUHlQZ0FLRGNJLUNnallxdldKeExEazhYc0tBX0ktQUFvT3dqNExDTlNUMDZfUXlOdjZxUUVLQV9JLUFBb093ajRMQ1AyMThJbnd0cldWdHdFS0FfSS1BQW9Od2o0S0NJbmp5ZmpWdHVMMVh3b0Q4ajRBQ2czQ1Bnb0l4LUM1djltdnBwZ3lDZ1B5UGdBS0RzSS1Dd2kwMnZQMC10ZTBydGdCQ2dQeVBnQUtEY0ktQ2dqUDNLU2s3Nno4OVFrS0FfSS1BQW9Od2o0S0NMZTVyN3p2MGVTRWJ3b0Q4ajRBQ2czQ1Bnb0kyNXVaaTVYU2dPY0lDZ1B5UGdBS0RzSS1Dd2lEb1k3dXR2RFp3WW9CQ2dQeVBnQUtEY0ktQ2dqMXRLMkVxY1RtM3dRS0FfSS1BQW9Od2o0S0NNdnRtWl9hZ29TUEpnb0Q4ajRBQ2czQ1Bnb0l1UFdDZ09mWDFmdFlDZ1B5UGdBS0RjSS1DZ2k0dHNfbnpMZWozbWNTRkFBQ0JBWUlDZ3dPRUJJVUZoZ2FIQjRnSWlRbUdnUUlBQkFCR2dRSUFoQURHZ1FJQkJBRkdnUUlCaEFIR2dRSUNCQUpHZ1FJQ2hBTEdnUUlEQkFOR2dRSURoQVBHZ1FJRUJBUkdnUUlFaEFUR2dRSUZCQVZHZ1FJRmhBWEdnUUlHQkFaR2dRSUdoQWJHZ1FJSEJBZEdnUUlIaEFmR2dRSUlCQWhHZ1FJSWhBakdnUUlKQkFsR2dRSUpoQW5LaFFBQWdRR0NBb01EaEFTRkJZWUdod2VJQ0lrSmdqD3dhdGNoLW5leHQtZmVlZA%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
top_comments: Paginator(
|
||||
count: Some(705000),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyJSIRIgtaZWVycm51TGk1RTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
latest_comments: Paginator(
|
||||
count: Some(705000),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyOCIRIgtaZWVycm51TGk1RTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -771,15 +771,18 @@ VideoDetails(
|
|||
),
|
||||
],
|
||||
ctoken: Some("CBQSExILWmVlcnJudUxpNUXAAQHIAQEYACqiDDJzNkw2d3lTQ1FxUENRb0Q4ajRBQ2czQ1Bnb0l1UFdDZ09mWDFmdFlDZ1B5UGdBS0RzSS1Dd2pPcjZhVTlMN2ttdUVCQ2dQeVBnQUtFdEktRHdvTlVrUmFaV1Z5Y201MVRHazFSUW9EOGo0QUNnN0NQZ3NJLU1xaTZ1MlZ3NC01QVFvRDhqNEFDZzNDUGdvSXNZamU0NGJFeGFKUkNnUHlQZ0FLRGNJLUNnaXF4bzYxd01DQ3d6WUtBX0ktQUFvT3dqNExDTmVSckxfYzNNaTEzd0VLQV9JLUFBb053ajRLQ051Ym1ZdVYwb0RuQ0FvRDhqNEFDZzNDUGdvSTE2YTg4NTI1OXNsUkNnUHlQZ0FLRGNJLUNnamJqcXVGb2V1YjB3Z0tBX0ktQUFvTndqNEtDTW4xbEkzbHUtaW1mQW9EOGo0QUNnM0NQZ29JdXFpZTZ0SzRrZUZqQ2dQeVBnQUtEY0ktQ2dqUGdaejB2OC1sNkhRS0FfSS1BQW9Pd2o0TENQMjE4SW53dHJXVnR3RUtBX0ktQUFvT3dqNExDTXVLdF9DUDllR21nUUVLQV9JLUFBb053ajRLQ0szRXN0V3YwTC1iVWdvRDhqNEFDZzNDUGdvSWc1NzdoSnJSdDRvcUNnUHlQZ0FLRGNJLUNnaVJ1c1BtemZtenlGd0tBX0ktQUFvT3dqNExDTlRBcHMtZGh2eXEwZ0VLQV9JLUFBb053ajRLQ0p2aDhzV0g1OXk1SUFvRDhqNEFDaF9TUGh3S0dsSkVRVTk2ZFZaM1JWbDNZMUZFTkhWMmNHZEJUbU5JU0ZWM0NoX1NQaHdLR2xKRVFVOWZjQzFWYmpCSGVUbHVXRlZ0Wm1kaE0xTlNYMXAzQ2hfU1Bod0tHbEpFUVU5cFEwaENhR3R1VTBSd09HcFZWekJPUzFoWU9FMVJDaF9TUGh3S0dsSkVRVTlYWjBsd1lVbDZha1p6UVhkeE5GOXhWR2hyTlROQkNoX1NQaHdLR2xKRVFVOXFNVkpuZEhkZmVtZHJibWxSWkdkTU5XTnlVRmxCQ2hfU1Bod0tHbEpFUVU4NWExbHRhMU5KVG5CVGFYVldTalEzUjNkT1RWSm5DaF9TUGh3S0dsSkVRVTlGYjNOTlVtbHlhM1ZKTjNvNE1tSmZia0oyUjNoQkNoX1NQaHdLR2xKRVFVOW1PRlExTURaUVZGcFVWRmxDWm01RVRVNURiR0ZSQ2hfU1Bod0tHbEpFUVU5UllqSlhRWGxLYTBwMlRURmhaMGRYZEhkRkxVOUJDaF9TUGh3S0dsSkVRVTlNWDFGNk1scFJRbUZNUkROTFExTnFWalpYZG5wM0NoX1NQaHdLR2xKRVFVOXpjeTFGWVdSRFpHZzBUVmxYV0hsMGFtWkpabFYzQ2hfU1Bod0tHbEpFUVU4MVRraFVXblJGV0ROSGJIWlhRMjgyYTJOdGFrdDNDaF9TUGh3S0dsSkVRVTlMWDBjMVRVZzFaM0ZJUTNRd1VXdENZVlZJTjJwUkNoX1NQaHdLR2xKRVFVOVpUWEZhWlV4U1RXMXhaRW8zZGs5b09UQXRhME5CQ2hfU1Bod0tHbEpFUVU4eVNGbEJhMFpIYzBGSmFWVmthRE5NVUhGRE5UZG5FaFVBQWdRR0NBb01EaEFTRkJZWUdod2VJQ0lrSmlnYUJBZ0FFQUVhQkFnQ0VBTWFCQWdFRUFVYUJBZ0dFQWNhQkFnSUVBa2FCQWdLRUFzYUJBZ01FQTBhQkFnT0VBOGFCQWdRRUJFYUJBZ1NFQk1hQkFnVUVCVWFCQWdXRUJjYUJBZ1lFQmthQkFnYUVCc2FCQWdjRUIwYUJBZ2VFQjhhQkFnZ0VDRWFCQWdpRUNNYUJBZ2tFQ1VhQkFnbUVDY2FCQWdvRUNrYUJBZ29FQ29hQkFnb0VDc2FCQWdvRUN3YUJBZ29FQzBhQkFnb0VDNGFCQWdvRUM4YUJBZ29FREFhQkFnb0VERWFCQWdvRURJYUJBZ29FRE1hQkFnb0VEUWFCQWdvRURVYUJBZ29FRFlhQkFnb0VEY3FGUUFDQkFZSUNnd09FQklVRmhnYUhCNGdJaVFtS0FqD3dhdGNoLW5leHQtZmVlZA%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
top_comments: Paginator(
|
||||
count: Some(705000),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyJSIRIgtaZWVycm51TGk1RTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
latest_comments: Paginator(
|
||||
count: Some(705000),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyOCIRIgtaZWVycm51TGk1RTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1227,15 +1227,18 @@ VideoDetails(
|
|||
),
|
||||
],
|
||||
ctoken: Some("CBQSExILbkZEQnhCVWZFNzTAAQHIAQEYACqIBjJzNkw2d3lfQkFxOEJBb0Q4ajRBQ2c3Q1Bnc0ltdG1tX1p6ei1xYTNBUW9EOGo0QUNnN0NQZ3NJcThTNW5lQ1N0c2JpQVFvRDhqNEFDZzNDUGdvSXlvel8tN21NbWI1TUNnUHlQZ0FLRGNJLUNnaTFyOUdxODh6aXoxQUtBX0ktQUFvT3dqNExDS0c4MVlXQWlLRFd5UUVLQV9JLUFBb093ajRMQ0xMUnRJMzRfYjNDeXdFS0FfSS1BQW9Od2o0S0NQZlcxdldzM3AyLWJ3b0Q4ajRBQ2czQ1Bnb0loOVhCZ2NtcjNvY3RDZ1B5UGdBS0RjSS1DZ2oxMHFycnU2VzdyRmtLQV9JLUFBb093ajRMQ05McHBmckhxdkh0dmdFS0FfSS1BQW9Od2o0S0NPbUdpTG13M09iUUp3b0Q4ajRBQ2czQ1Bnb0lySjc1czZ6TGd1VUtDZ1B5UGdBS0RzSS1Dd2lLdmZ1WTdJcmZuX1VCQ2dQeVBnQUtEc0ktQ3dqTzY5WHk1UDZhdnVRQkNnUHlQZ0FLRHNJLUN3aS1pOTN2OFkzM3NOY0JDZ1B5UGdBS0RjSS1DZ2pIbmNQR2dwakp2QkFLQV9JLUFBb013ajRKQ0tlSTRxUzl1dHB6Q2dQeVBnQUtEY0ktQ2dqVXJkbU83YWFLbVFrS0FfSS1BQW9Pd2o0TENPQ0xrT0hDdllxSjNRRUtBX0ktQUFvTndqNEtDUFRwazh6RXc2Yk1IUklVQUFJRUJnZ0tEQTRRRWhRV0dCb2NIaUFpSkNZYUJBZ0FFQUVhQkFnQ0VBTWFCQWdFRUFVYUJBZ0dFQWNhQkFnSUVBa2FCQWdLRUFzYUJBZ01FQTBhQkFnT0VBOGFCQWdRRUJFYUJBZ1NFQk1hQkFnVUVCVWFCQWdXRUJjYUJBZ1lFQmthQkFnYUVCc2FCQWdjRUIwYUJBZ2VFQjhhQkFnZ0VDRWFCQWdpRUNNYUJBZ2tFQ1VhQkFnbUVDY3FGQUFDQkFZSUNnd09FQklVRmhnYUhCNGdJaVFtag93YXRjaC1uZXh0LWZlZWQ%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
top_comments: Paginator(
|
||||
count: Some(3200),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyJSIRIgtuRkRCeEJVZkU3NDAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
latest_comments: Paginator(
|
||||
count: Some(3200),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyOCIRIgtuRkRCeEJVZkU3NDABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -40,15 +40,18 @@ VideoDetails(
|
|||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
top_comments: Paginator(
|
||||
count: None,
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC0hSS3UwY3Zycl9vGAYyJSIRIgtIUkt1MGN2cnJfbzABeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
latest_comments: Paginator(
|
||||
count: None,
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC0hSS3UwY3Zycl9vGAYyOCIRIgtIUkt1MGN2cnJfbzABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -718,15 +718,18 @@ VideoDetails(
|
|||
),
|
||||
],
|
||||
ctoken: Some("CBQSExILMHJiOUNmT3ZvamvAAQHIAQEYACqrBjJzNkw2d3paQkFyV0JBb0Q4ajRBQ2c3Q1Bnc0l4Ty1xb3AyV25NWDVBUW9EOGo0QUNnN0NQZ3NJZ29uTDc3clgtWjdqQVFvRDhqNEFDZzNDUGdvSTU5N2RnZW1vaEl4YUNnUHlQZ0FLSWRJLUhnb2NVa1JEVFZWRE1sUlljVjkwTURaSWFtUnlNbWRmUzJSTGNFaFJad29EOGo0QUNnN0NQZ3NJMDlqVG05MzIwZEhtQVFvRDhqNEFDZzdDUGdzSWphem5fUFhDNnF2c0FRb0Q4ajRBQ2c3Q1Bnc0lrckN0cmRULXdfdldBUW9EOGo0QUNnN0NQZ3NJdGZfQnJ0NjNuYjJPQVFvRDhqNEFDZzdDUGdzSW1wYnF5SkdsNmRudkFRb0Q4ajRBQ2c3Q1Bnc0lxT2FZbXBqZjM3ZTdBUW9EOGo0QUNnN0NQZ3NJMEtfcWhNRGYzZDI2QVFvRDhqNEFDZzNDUGdvSW45N1lqLWllbTdnLUNnUHlQZ0FLRHNJLUN3aVg5by1DNzhxbzBNa0JDZ1B5UGdBS0RzSS1Dd2o2a3BYUXNPS1otZFFCQ2dQeVBnQUtEc0ktQ3dpUTI2aVNxYjYyd0lnQkNnUHlQZ0FLRGNJLUNnanV5ZmUtLW9iRWlqNEtBX0ktQUFvTndqNEtDSWVGemRXOGpyMmRid29EOGo0QUNnM0NQZ29JMGRlT2tfNmlfZkloQ2dQeVBnQUtEc0ktQ3dpajRPenpwdnp5NUlJQkNnUHlQZ0FLRHNJLUN3akRqZkdfdXZYQm9MZ0JFaFFBQWdRR0NBb01EaEFTRkJZWUdod2VJQ0lrSmhvRUNBQVFBUm9FQ0FJUUF4b0VDQVFRQlJvRUNBWVFCeG9FQ0FnUUNSb0VDQW9RQ3hvRUNBd1FEUm9FQ0E0UUR4b0VDQkFRRVJvRUNCSVFFeG9FQ0JRUUZSb0VDQllRRnhvRUNCZ1FHUm9FQ0JvUUd4b0VDQndRSFJvRUNCNFFIeG9FQ0NBUUlSb0VDQ0lRSXhvRUNDUVFKUm9FQ0NZUUp5b1VBQUlFQmdnS0RBNFFFaFFXR0JvY0hpQWlKQ1lqD3dhdGNoLW5leHQtZmVlZA%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
top_comments: Paginator(
|
||||
count: Some(2200),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SCzByYjlDZk92b2prGAYyJSIRIgswcmI5Q2ZPdm9qazAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
latest_comments: Paginator(
|
||||
count: Some(2200),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SCzByYjlDZk92b2prGAYyOCIRIgswcmI5Q2ZPdm9qazABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1186,15 +1186,18 @@ VideoDetails(
|
|||
),
|
||||
],
|
||||
ctoken: Some("CBQSExILbkZEQnhCVWZFNzTAAQHIAQEYACqkBjJzNkw2d3pVQkFyUkJBb0Q4ajRBQ2d6Q1Bna0lwNGppcEwyNjJuTUtBX0ktQUFvTndqNEtDSW1CN18yaHlQUEdDUW9EOGo0QUNnM0NQZ29JaDlYQmdjbXIzb2N0Q2dQeVBnQUtEc0ktQ3dpZHRjTHlpWV9FaVpvQkNnUHlQZ0FLRHNJLUN3aW4wN2ZZbWZIVjVkVUJDZ1B5UGdBS0RjSS1DZ2pqNEstdl9ibWY0Z2dLQV9JLUFBb053ajRLQ0tqeDJfakowT0tlZlFvRDhqNEFDZzdDUGdzSXZvdmQ3X0dOOTdEWEFRb0Q4ajRBQ2czQ1Bnb0k0Y1hvektyVzFMWkJDZ1B5UGdBS0RjSS1DZ2pndWNfcXk4YkVneVFLQV9JLUFBb053ajRLQ1B2ZjAtcXMxdE90WlFvRDhqNEFDaUhTUGg0S0hGSkVRMDFWUTFoMWNWTkNiRWhCUlRaWWR5MTVaVXBCTUZSMWJuY0tBX0ktQUFvT3dqNExDTDZsdFl2ejZaQ2gyZ0VLQV9JLUFBb093ajRMQ0l6cnFkenM3NmJZMGdFS0FfSS1BQW9Pd2o0TENJUFNuOGpBbmRYYnNRRUtBX0ktQUFvT3dqNExDSXZEcXZidW9jamp6UUVLQV9JLUFBb093ajRMQ05HSXFzZVM5cUR2cFFFS0FfSS1BQW9Pd2o0TENNT2o4T3FwMVpIWDJBRUtBX0ktQUFvT3dqNExDSnJacHYyYzhfcW10d0VLQV9JLUFBb053ajRLQ1BmRGpKaTZzXy1ZUVJJVUFBSUVCZ2dLREE0UUVoUVdHQm9jSGlBaUpDWWFCQWdBRUFFYUJBZ0NFQU1hQkFnRUVBVWFCQWdHRUFjYUJBZ0lFQWthQkFnS0VBc2FCQWdNRUEwYUJBZ09FQThhQkFnUUVCRWFCQWdTRUJNYUJBZ1VFQlVhQkFnV0VCY2FCQWdZRUJrYUJBZ2FFQnNhQkFnY0VCMGFCQWdlRUI4YUJBZ2dFQ0VhQkFnaUVDTWFCQWdrRUNVYUJBZ21FQ2NxRkFBQ0JBWUlDZ3dPRUJJVUZoZ2FIQjRnSWlRbWoPd2F0Y2gtbmV4dC1mZWVk"),
|
||||
endpoint: browse,
|
||||
),
|
||||
top_comments: Paginator(
|
||||
count: Some(2900),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyJSIRIgtuRkRCeEJVZkU3NDAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
latest_comments: Paginator(
|
||||
count: Some(2900),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyOCIRIgtuRkRCeEJVZkU3NDABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -775,15 +775,18 @@ VideoDetails(
|
|||
),
|
||||
],
|
||||
ctoken: Some("CBQSExILODZZTEZPb2c0R03AAQHIAQEYACrgBzJzNkw2d3poQlFyZUJRb0Q4ajRBQ2czQ1Bnb0k3b3VlbjdUTV9yRklDZ1B5UGdBS0RjSS1DZ2lIaU55ejlkLWI2M1VLQV9JLUFBb093ajRMQ0tXNTlNR2pwdkNhb0FFS0FfSS1BQW9Od2o0S0NLLTduYXJ2NXN1bWFRb0Q4ajRBQ2c3Q1Bnc0l2ZV9nLVBfQ3dPUHFBUW9EOGo0QUNnN0NQZ3NJdDRDUW1aS2hpTUdmQVFvRDhqNEFDZzNDUGdvSWpZQ1lnWVg4c1lOdUNnUHlQZ0FLRHNJLUN3aUFvckdHN3RtSW43Z0JDZ1B5UGdBS0RjSS1DZ2k0NmNINDBLZTYwR2NLQV9JLUFBb093ajRMQ0xLaHc5M1d1OUdKMWdFS0FfSS1BQW9Od2o0S0NJQ18ySnEzbHFDbVpBb0Q4ajRBQ2czQ1Bnb0l1SWlsckpyb2dxODBDZ1B5UGdBS0RzSS1Dd2lQN1lqano5X25pYW9CQ2dQeVBnQUtEc0ktQ3dqWG9ZVzc2ZUgyX3MwQkNnUHlQZ0FLRHNJLUN3ajU4ZmZxLVpHYnpwZ0JDZ1B5UGdBS0RjSS1DZ2pfNXEyR3k2djQzMzRLQV9JLUFBb053ajRLQ09hQWlMdncyZXFQSmdvRDhqNEFDZzNDUGdvSWhPMjJ3TXU2cWY0UUNnUHlQZ0FLRHNJLUN3ajluTnVJd016eDB1d0JDZ1B5UGdBS0RjSS1DZ2lLNU5PTjY5N0dtaWtLQV9JLUFBb2FtajhYQ2hWUGZEazRNek0xTXpjMU5ERTJOVGMzT0RnMk1UY0tHNW9fR0FvV1Qzd3hNekF5TXpnek9UY3hPREk0TXpVMU9EUTFNd29ibWo4WUNoWlBmREUxT0RVek5Ua3dPRGczTURVeE1qVTBOemcwQ2dQeVBnQUtBX0ktQUJJWEFBSUVCZ2dLREE0UUVoUVdHQm9jSGlBaUpDWW9MQzBhQkFnQUVBRWFCQWdDRUFNYUJBZ0VFQVVhQkFnR0VBY2FCQWdJRUFrYUJBZ0tFQXNhQkFnTUVBMGFCQWdPRUE4YUJBZ1FFQkVhQkFnU0VCTWFCQWdVRUJVYUJBZ1dFQmNhQkFnWUVCa2FCQWdhRUJzYUJBZ2NFQjBhQkFnZUVCOGFCQWdnRUNFYUJBZ2lFQ01hQkFna0VDVWFCQWdtRUNjYUJBZ29FQ2thQkFnb0VDb2FCQWdvRUNzYUJBZ3NFQ2thQkFnc0VDb2FCQWdzRUNzYUJBZ3RFQ2thQkFndEVDb2FCQWd0RUNzcUZ3QUNCQVlJQ2d3T0VCSVVGaGdhSEI0Z0lpUW1LQ3d0ag93YXRjaC1uZXh0LWZlZWQ%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
top_comments: Paginator(
|
||||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
latest_comments: Paginator(
|
||||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -533,15 +533,18 @@ VideoDetails(
|
|||
),
|
||||
],
|
||||
ctoken: Some("CBQSExILWHVNMm9uTUd2VEnAAQHIAQEYACqsBzJzNkw2d3k2QlFxM0JRb0Q4ajRBQ2czQ1Bnb0lvSmVsMDhiajMtcGVDZ1B5UGdBS0o5SS1KQW9pVUV4aGFGSktXRWczV0ZCSWJWZE9TemMwVm5wM1NVWXljWFZYY1dSR1NWZDJjZ29EOGo0QUNpZlNQaVFLSWxCTU5pMTRZV3hIWVZaRmRYQjJlVGxHUVVoZlJYZ3pTRlYxWHpGaFVrRXlialFLQV9JLUFBb1MwajRQQ2cxU1JGaDFUVEp2YmsxSGRsUkpDZ1B5UGdBS0RjSS1DZ2kxajRmWmtKNmo1UVVLQV9JLUFBb053ajRLQ0l6bHViS2doTldnSVFvRDhqNEFDZzNDUGdvSWpaeW4tUHlrXy1sU0NnUHlQZ0FLRHNJLUN3andyOUMtc18tb2g3SUJDZ1B5UGdBS0o5SS1KQW9pVUV3d1dqSlNSVFZsY1dGWlRWRXhiRnBaZGtWalRrOW1UVmx3VFVvelkyTktRd29EOGo0QUNnN0NQZ3NJM1lxcjFyWEI4TEs3QVFvRDhqNEFDZzdDUGdzSWhaYl83dVdna1BDZ0FRb0Q4ajRBQ2c3Q1Bnc0l2YjdxdUtldHhNYWtBUW9EOGo0QUNnM0NQZ29JblpEVXc5akYtT1VPQ2dQeVBnQUtIOUktSEFvYVVrUkZUV1E0VUZwSmRqbERVSE4yZGtWRVltOWZjRlZFTkhjS0FfSS1BQW9Od2o0S0NMLV9fclRrM3BmdENnb0Q4ajRBQ2c3Q1Bnc0lpZG5aNkxmZG5iZkxBUW9EOGo0QUNnM0NQZ29JdlB5dmw4UzJ4b0ppQ2dQeVBnQUtETUktQ1FpdHdOTzB0TmFrQ1FvRDhqNEFDaWZTUGlRS0lsQk1NazR6TjFoVWQxaG5jRlZpYWxSemNXVjFNbEZFZVRCTGIyRnpkMDlZTVZvS0FfSS1BQW9Od2o0S0NNQ1VudGpKOVkyaE94SVVBQUlFQmdnS0RBNFFFaFFXR0JvY0hpQWlKQ1lhQkFnQUVBRWFCQWdDRUFNYUJBZ0VFQVVhQkFnR0VBY2FCQWdJRUFrYUJBZ0tFQXNhQkFnTUVBMGFCQWdPRUE4YUJBZ1FFQkVhQkFnU0VCTWFCQWdVRUJVYUJBZ1dFQmNhQkFnWUVCa2FCQWdhRUJzYUJBZ2NFQjBhQkFnZUVCOGFCQWdnRUNFYUJBZ2lFQ01hQkFna0VDVWFCQWdtRUNjcUZBQUNCQVlJQ2d3T0VCSVVGaGdhSEI0Z0lpUW1qD3dhdGNoLW5leHQtZmVlZA%3D%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
top_comments: Paginator(
|
||||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
latest_comments: Paginator(
|
||||
count: Some(0),
|
||||
items: [],
|
||||
ctoken: None,
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -736,15 +736,18 @@ VideoDetails(
|
|||
),
|
||||
],
|
||||
ctoken: Some("CBQSExILWmVlcnJudUxpNUXAAQHIAQEYACq7BjJzNkw2d3psQkFyaUJBb0Q4ajRBQ2c3Q1Bnc0l6cS1tbFBTLTVKcmhBUW9EOGo0QUNoTFNQZzhLRFZKRVdtVmxjbkp1ZFV4cE5VVUtBX0ktQUFvdzBqNHRDaXRTUkVOTVFVczFkWGxmYXpJM2RYVXRSWFJSWDJJMVZUSnlNalpFVGtSYVQyMU9jVWRrWTJOVlNVZFJDZ1B5UGdBS0RjSS1DZ2k0OVlLQTU5ZlYtMWdLQV9JLUFBb053ajRLQ0tyR2pyWEF3SUxETmdvRDhqNEFDZzNDUGdvSWc1NzdoSnJSdDRvcUNnUHlQZ0FLRGNJLUNnakw3Wm1mMm9LRWp5WUtBX0ktQUFvTndqNEtDTnVibVl1VjBvRG5DQW9EOGo0QUNnN0NQZ3NJLU1xaTZ1MlZ3NC01QVFvRDhqNEFDZzNDUGdvSXk4ZmVyNE9zMHVSQ0NnUHlQZ0FLRGNJLUNnalByYkhnb292TTFSRUtBX0ktQUFvT3dqNExDSlhQa191MzVmVHJwQUVLQV9JLUFBb053ajRLQ0o3WmxkTG1pWkxDZFFvRDhqNEFDZzdDUGdzSWc2R083cmJ3MmNHS0FRb0Q4ajRBQ2czQ1Bnb0lyY1N5MWFfUXY1dFNDZ1B5UGdBS0RjSS1DZ2kzdWEtODc5SGtoRzhLQV9JLUFBb093ajRMQ0pfTTJhZUktNWZ4NmdFS0FfSS1BQW9Od2o0S0NMcW9udXJTdUpIaFl3b0Q4ajRBQ2c3Q1Bnc0l0TnJ6OVByWHRLN1lBUW9EOGo0QUNnM0NQZ29JOVpHYjR0LTZyYWMxRWhRQUFnUUdDQW9NRGhBU0ZCWVlHaHdlSUNJa0pob0VDQUFRQVJvRUNBSVFBeG9FQ0FRUUJSb0VDQVlRQnhvRUNBZ1FDUm9FQ0FvUUN4b0VDQXdRRFJvRUNBNFFEeG9FQ0JBUUVSb0VDQklRRXhvRUNCUVFGUm9FQ0JZUUZ4b0VDQmdRR1JvRUNCb1FHeG9FQ0J3UUhSb0VDQjRRSHhvRUNDQVFJUm9FQ0NJUUl4b0VDQ1FRSlJvRUNDWVFKeW9VQUFJRUJnZ0tEQTRRRWhRV0dCb2NIaUFpSkNZag93YXRjaC1uZXh0LWZlZWQ%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
top_comments: Paginator(
|
||||
count: Some(705000),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyJSIRIgtaZWVycm51TGk1RTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
|
||||
endpoint: browse,
|
||||
),
|
||||
latest_comments: Paginator(
|
||||
count: Some(705000),
|
||||
items: [],
|
||||
ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyOCIRIgtaZWVycm51TGk1RTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
|
||||
endpoint: browse,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
Reference in a new issue