feat: add channel video/playlist continuation
This commit is contained in:
parent
6f1a1c4440
commit
6ac5bc3782
14 changed files with 19775 additions and 29 deletions
|
|
@ -22,6 +22,8 @@ pub async fn download_testfiles(project_root: &Path) {
|
|||
channel_videos(&testfiles).await;
|
||||
channel_playlists(&testfiles).await;
|
||||
channel_info(&testfiles).await;
|
||||
channel_videos_cont(&testfiles).await;
|
||||
channel_playlists_cont(&testfiles).await;
|
||||
}
|
||||
|
||||
const CLIENT_TYPES: [ClientType; 5] = [
|
||||
|
|
@ -245,3 +247,47 @@ async fn channel_info(testfiles: &Path) {
|
|||
.await
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
async fn channel_videos_cont(testfiles: &Path) {
|
||||
let mut json_path = testfiles.to_path_buf();
|
||||
json_path.push("channel");
|
||||
json_path.push("channel_videos_cont.json");
|
||||
if json_path.exists() {
|
||||
return;
|
||||
}
|
||||
|
||||
let rp = RustyPipe::new();
|
||||
let videos = rp
|
||||
.query()
|
||||
.channel_videos("UC2DjFE7Xf11URZqWBigcVOQ")
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let rp = rp_testfile(&json_path);
|
||||
rp.query()
|
||||
.channel_videos_continuation(&videos.content.ctoken.unwrap())
|
||||
.await
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
async fn channel_playlists_cont(testfiles: &Path) {
|
||||
let mut json_path = testfiles.to_path_buf();
|
||||
json_path.push("channel");
|
||||
json_path.push("channel_playlists_cont.json");
|
||||
if json_path.exists() {
|
||||
return;
|
||||
}
|
||||
|
||||
let rp = RustyPipe::new();
|
||||
let playlists = rp
|
||||
.query()
|
||||
.channel_playlists("UC2DjFE7Xf11URZqWBigcVOQ")
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let rp = rp_testfile(&json_path);
|
||||
rp.query()
|
||||
.channel_playlists_continuation(&playlists.content.ctoken.unwrap())
|
||||
.await
|
||||
.unwrap();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
use anyhow::{bail, Result};
|
||||
use anyhow::{anyhow, bail, Result};
|
||||
use reqwest::Method;
|
||||
use serde::Serialize;
|
||||
use url::Url;
|
||||
|
|
@ -14,7 +14,7 @@ use crate::{
|
|||
|
||||
use super::{
|
||||
response::{self, IsLive, IsShort},
|
||||
ClientType, MapResponse, RustyPipeQuery, YTContext,
|
||||
ClientType, MapResponse, QContinuation, RustyPipeQuery, YTContext,
|
||||
};
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
|
|
@ -75,6 +75,27 @@ impl RustyPipeQuery {
|
|||
.await
|
||||
}
|
||||
|
||||
pub async fn channel_videos_continuation(
|
||||
&self,
|
||||
ctoken: &str,
|
||||
) -> Result<Paginator<ChannelVideo>> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
let request_body = QContinuation {
|
||||
context,
|
||||
continuation: ctoken.to_owned(),
|
||||
};
|
||||
|
||||
self.execute_request::<response::ChannelCont, _, _>(
|
||||
ClientType::Desktop,
|
||||
"channel_videos_continuation",
|
||||
ctoken,
|
||||
Method::POST,
|
||||
"browse",
|
||||
&request_body,
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn channel_playlists(
|
||||
&self,
|
||||
channel_id: &str,
|
||||
|
|
@ -97,6 +118,27 @@ impl RustyPipeQuery {
|
|||
.await
|
||||
}
|
||||
|
||||
pub async fn channel_playlists_continuation(
|
||||
&self,
|
||||
ctoken: &str,
|
||||
) -> Result<Paginator<ChannelPlaylist>> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
let request_body = QContinuation {
|
||||
context,
|
||||
continuation: ctoken.to_owned(),
|
||||
};
|
||||
|
||||
self.execute_request::<response::ChannelCont, _, _>(
|
||||
ClientType::Desktop,
|
||||
"channel_videos_continuation",
|
||||
ctoken,
|
||||
Method::POST,
|
||||
"browse",
|
||||
&request_body,
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn channel_info(&self, channel_id: &str) -> Result<Channel<ChannelInfo>> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
let request_body = QChannel {
|
||||
|
|
@ -235,6 +277,44 @@ 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>>> {
|
||||
let mut actions = self.on_response_received_actions;
|
||||
let res = some_or_bail!(
|
||||
actions.try_swap_remove(0),
|
||||
Err(anyhow!("no received action"))
|
||||
)
|
||||
.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>>> {
|
||||
let mut actions = self.on_response_received_actions;
|
||||
let res = some_or_bail!(
|
||||
actions.try_swap_remove(0),
|
||||
Err(anyhow!("no received action"))
|
||||
)
|
||||
.append_continuation_items_action
|
||||
.continuation_items;
|
||||
|
||||
Ok(map_playlists(res))
|
||||
}
|
||||
}
|
||||
|
||||
fn map_videos(
|
||||
res: MapResult<Vec<response::VideoListItem>>,
|
||||
lang: Language,
|
||||
|
|
@ -413,7 +493,9 @@ mod tests {
|
|||
|
||||
use crate::{
|
||||
client::{response, MapResponse, RustyPipe},
|
||||
model::{Channel, ChannelOrder, ChannelVideo, Language, Paginator},
|
||||
model::{
|
||||
Channel, ChannelInfo, ChannelOrder, ChannelPlaylist, ChannelVideo, Language, Paginator,
|
||||
},
|
||||
serializer::MapResult,
|
||||
};
|
||||
|
||||
|
|
@ -456,6 +538,12 @@ mod tests {
|
|||
)
|
||||
}
|
||||
}
|
||||
|
||||
let next = channel.content.next(rp.query()).await.unwrap().unwrap();
|
||||
assert!(
|
||||
!next.is_exhausted() && !next.items.is_empty(),
|
||||
"no more videos"
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
|
@ -474,6 +562,12 @@ mod tests {
|
|||
!channel.content.items.is_empty() && !channel.content.is_exhausted(),
|
||||
"got no playlists"
|
||||
);
|
||||
|
||||
let next = channel.content.next(rp.query()).await.unwrap().unwrap();
|
||||
assert!(
|
||||
!next.is_exhausted() && !next.items.is_empty(),
|
||||
"no more playlists"
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
|
@ -563,4 +657,82 @@ mod tests {
|
|||
".content.items[].publish_date" => "[date]",
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn t_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 t_map_channel_playlists() {
|
||||
let json_path = Path::new("testfiles/channel/channel_playlists.json");
|
||||
let json_file = File::open(json_path).unwrap();
|
||||
|
||||
let channel: response::Channel =
|
||||
serde_json::from_reader(BufReader::new(json_file)).unwrap();
|
||||
let map_res: MapResult<Channel<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", map_res.c);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn t_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 t_map_channel_info() {
|
||||
let json_path = Path::new("testfiles/channel/channel_info.json");
|
||||
let json_file = File::open(json_path).unwrap();
|
||||
|
||||
let channel: response::Channel =
|
||||
serde_json::from_reader(BufReader::new(json_file)).unwrap();
|
||||
let map_res: MapResult<Channel<ChannelInfo>> = 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_info", map_res.c);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,13 +65,6 @@ impl ClientType {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Serialize)]
|
||||
struct YTQuery<T> {
|
||||
context: YTContext,
|
||||
#[serde(flatten)]
|
||||
data: T,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
struct YTContext {
|
||||
|
|
@ -131,6 +124,13 @@ struct ThirdParty {
|
|||
embed_url: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
struct QContinuation {
|
||||
context: YTContext,
|
||||
continuation: String,
|
||||
}
|
||||
|
||||
const DEFAULT_UA: &str = "Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0";
|
||||
|
||||
const CONSENT_COOKIE: &str = "CONSENT";
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
use anyhow::Result;
|
||||
|
||||
use crate::model::{Comment, Paginator, PlaylistVideo, RecommendedVideo};
|
||||
use crate::model::{
|
||||
ChannelPlaylist, ChannelVideo, Comment, Paginator, PlaylistVideo, RecommendedVideo,
|
||||
};
|
||||
|
||||
use super::RustyPipeQuery;
|
||||
|
||||
|
|
@ -92,6 +94,94 @@ impl Paginator<RecommendedVideo> {
|
|||
}
|
||||
}
|
||||
|
||||
impl Paginator<ChannelVideo> {
|
||||
pub async fn next(&self, query: RustyPipeQuery) -> Result<Option<Self>> {
|
||||
Ok(match &self.ctoken {
|
||||
Some(ctoken) => Some(query.channel_videos_continuation(ctoken).await?),
|
||||
None => None,
|
||||
})
|
||||
}
|
||||
|
||||
pub async fn extend(&mut self, query: RustyPipeQuery) -> Result<bool> {
|
||||
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<()> {
|
||||
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<()> {
|
||||
while self.items.len() < n_items {
|
||||
match self.extend(query.clone()).await {
|
||||
Ok(false) => break,
|
||||
Err(e) => return Err(e),
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl Paginator<ChannelPlaylist> {
|
||||
pub async fn next(&self, query: RustyPipeQuery) -> Result<Option<Self>> {
|
||||
Ok(match &self.ctoken {
|
||||
Some(ctoken) => Some(query.channel_playlists_continuation(ctoken).await?),
|
||||
None => None,
|
||||
})
|
||||
}
|
||||
|
||||
pub async fn extend(&mut self, query: RustyPipeQuery) -> Result<bool> {
|
||||
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<()> {
|
||||
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<()> {
|
||||
while self.items.len() < n_items {
|
||||
match self.extend(query.clone()).await {
|
||||
Ok(false) => break,
|
||||
Err(e) => return Err(e),
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl Paginator<Comment> {
|
||||
pub async fn next(&self, query: RustyPipeQuery) -> Result<Option<Self>> {
|
||||
Ok(match &self.ctoken {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,9 @@ use crate::{
|
|||
util::{self, TryRemove},
|
||||
};
|
||||
|
||||
use super::{response, ClientType, MapResponse, MapResult, RustyPipeQuery, YTContext};
|
||||
use super::{
|
||||
response, ClientType, MapResponse, MapResult, QContinuation, RustyPipeQuery, YTContext,
|
||||
};
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
|
|
@ -20,13 +22,6 @@ struct QPlaylist {
|
|||
browse_id: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
struct QPlaylistCont {
|
||||
context: YTContext,
|
||||
continuation: String,
|
||||
}
|
||||
|
||||
impl RustyPipeQuery {
|
||||
pub async fn playlist(self, playlist_id: &str) -> Result<Playlist> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
|
|
@ -48,7 +43,7 @@ impl RustyPipeQuery {
|
|||
|
||||
pub async fn playlist_continuation(self, ctoken: &str) -> Result<Paginator<PlaylistVideo>> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
let request_body = QPlaylistCont {
|
||||
let request_body = QContinuation {
|
||||
context,
|
||||
continuation: ctoken.to_owned(),
|
||||
};
|
||||
|
|
|
|||
|
|
@ -18,6 +18,13 @@ pub struct Channel {
|
|||
pub microformat: Microformat,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct ChannelCont {
|
||||
pub on_response_received_actions: Vec<OnResponseReceivedAction>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct Contents {
|
||||
|
|
@ -165,3 +172,17 @@ pub struct NavigationEndpoint {
|
|||
pub struct UrlEndpoint {
|
||||
pub url: String,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct OnResponseReceivedAction {
|
||||
pub append_continuation_items_action: AppendAction,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct AppendAction {
|
||||
#[serde_as(as = "VecLogError<_>")]
|
||||
pub continuation_items: MapResult<Vec<VideoListItem>>,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ pub mod playlist_music;
|
|||
pub mod video_details;
|
||||
|
||||
pub use channel::Channel;
|
||||
pub use channel::ChannelCont;
|
||||
pub use player::Player;
|
||||
pub use playlist::Playlist;
|
||||
pub use playlist::PlaylistCont;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,163 @@
|
|||
---
|
||||
source: src/client/channel.rs
|
||||
expression: map_res.c
|
||||
---
|
||||
Channel(
|
||||
id: "UC2DjFE7Xf11URZqWBigcVOQ",
|
||||
name: "EEVblog",
|
||||
subscriber_count: Some(881000),
|
||||
avatar: [
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/ytc/AMLnZu9eKk4Nd16fX4Rn1TF1G7ReluwOl6M5558FTYAM=s48-c-k-c0x00ffffff-no-rj",
|
||||
width: 48,
|
||||
height: 48,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/ytc/AMLnZu9eKk4Nd16fX4Rn1TF1G7ReluwOl6M5558FTYAM=s88-c-k-c0x00ffffff-no-rj",
|
||||
width: 88,
|
||||
height: 88,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/ytc/AMLnZu9eKk4Nd16fX4Rn1TF1G7ReluwOl6M5558FTYAM=s176-c-k-c0x00ffffff-no-rj",
|
||||
width: 176,
|
||||
height: 176,
|
||||
),
|
||||
],
|
||||
description: "NO SCRIPT, NO FEAR, ALL OPINION\nAn off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers\nHosted by Dave Jones from Sydney Australia\n\nDONATIONS:\nBitcoin: 3KqyH1U3qrMPnkLufM2oHDU7YB4zVZeFyZ\nEthereum: 0x99ccc4d2654ba40744a1f678d9868ecb15e91206\nPayPal: david@alternatezone.com\n\nPatreon: https://www.patreon.com/eevblog\n\nEEVblog2: http://www.youtube.com/EEVblog2\nEEVdiscover: https://www.youtube.com/channel/UCkGvUEt8iQLmq3aJIMjT2qQ\n\nEMAIL:\nAdvertising/Commercial: eevblog+business@gmail.com\nFan mail: eevblog+fan@gmail.com\nHate Mail: eevblog+hate@gmail.com\n\nI DON\'T DO PAID VIDEO SPONSORSHIPS, DON\'T ASK!\n\nPLEASE:\nDo NOT ask for personal advice on something, post it in the EEVblog forum.\nI read ALL email, but please don\'t be offended if I don\'t have time to reply, I get a LOT of email.\n\nMailbag\nPO Box 7949\nBaulkham Hills NSW 2153\nAUSTRALIA",
|
||||
tags: [
|
||||
"electronics",
|
||||
"engineering",
|
||||
"maker",
|
||||
"hacker",
|
||||
"design",
|
||||
"circuit",
|
||||
"hardware",
|
||||
"pic",
|
||||
"atmel",
|
||||
"oscilloscope",
|
||||
"multimeter",
|
||||
"diy",
|
||||
"hobby",
|
||||
"review",
|
||||
"teardown",
|
||||
"microcontroller",
|
||||
"arduino",
|
||||
"video",
|
||||
"blog",
|
||||
"tutorial",
|
||||
"how-to",
|
||||
"interview",
|
||||
"rant",
|
||||
"industry",
|
||||
"news",
|
||||
"mailbag",
|
||||
"dumpster diving",
|
||||
"debunking",
|
||||
],
|
||||
vanity_url: Some("https://www.youtube.com/c/EevblogDave"),
|
||||
banner: [
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 1060,
|
||||
height: 175,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1138-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 1138,
|
||||
height: 188,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1707-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 1707,
|
||||
height: 283,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2120-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 2120,
|
||||
height: 351,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2276-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 2276,
|
||||
height: 377,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 2560,
|
||||
height: 424,
|
||||
),
|
||||
],
|
||||
mobile_banner: [
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w320-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 320,
|
||||
height: 88,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w640-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 640,
|
||||
height: 175,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w960-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 960,
|
||||
height: 263,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1280-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 1280,
|
||||
height: 351,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1440-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 1440,
|
||||
height: 395,
|
||||
),
|
||||
],
|
||||
tv_banner: [
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w320-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj",
|
||||
width: 320,
|
||||
height: 180,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w854-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj",
|
||||
width: 854,
|
||||
height: 480,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1280-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj",
|
||||
width: 1280,
|
||||
height: 720,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1920-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj",
|
||||
width: 1920,
|
||||
height: 1080,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2120-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj",
|
||||
width: 2120,
|
||||
height: 1192,
|
||||
),
|
||||
],
|
||||
content: ChannelInfo(
|
||||
create_date: Some("2009-04-04T00:00:00+02:00"),
|
||||
view_count: Some(186854342),
|
||||
links: [
|
||||
("EEVblog Web Site", "http://www.eevblog.com/"),
|
||||
("Twitter", "http://www.twitter.com/eevblog"),
|
||||
("Facebook", "http://www.facebook.com/EEVblog"),
|
||||
("EEVdiscover", "https://www.youtube.com/channel/UCkGvUEt8iQLmq3aJIMjT2qQ"),
|
||||
("The EEVblog Forum", "http://www.eevblog.com/forum"),
|
||||
("EEVblog Merchandise (T-Shirts)", "http://www.eevblog.com/merch"),
|
||||
("EEVblog Donations", "http://www.eevblog.com/donations/"),
|
||||
("Patreon", "https://www.patreon.com/eevblog"),
|
||||
("SubscribeStar", "https://www.subscribestar.com/eevblog"),
|
||||
("The AmpHour Radio Show", "http://www.theamphour.com/"),
|
||||
("Flickr", "http://www.flickr.com/photos/eevblog"),
|
||||
("EEVblog AMAZON Store", "http://www.amazon.com/gp/redirect.html?ie=UTF8&location=http%3A%2F%2Fwww.amazon.com%2F&tag=ee04-20&linkCode=ur2&camp=1789&creative=390957"),
|
||||
("2nd EEVblog Channel", "http://www.youtube.com/EEVblog2"),
|
||||
],
|
||||
),
|
||||
)
|
||||
|
|
@ -0,0 +1,510 @@
|
|||
---
|
||||
source: src/client/channel.rs
|
||||
expression: map_res.c
|
||||
---
|
||||
Channel(
|
||||
id: "UC2DjFE7Xf11URZqWBigcVOQ",
|
||||
name: "EEVblog",
|
||||
subscriber_count: Some(881000),
|
||||
avatar: [
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/ytc/AMLnZu9eKk4Nd16fX4Rn1TF1G7ReluwOl6M5558FTYAM=s48-c-k-c0x00ffffff-no-rj",
|
||||
width: 48,
|
||||
height: 48,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/ytc/AMLnZu9eKk4Nd16fX4Rn1TF1G7ReluwOl6M5558FTYAM=s88-c-k-c0x00ffffff-no-rj",
|
||||
width: 88,
|
||||
height: 88,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/ytc/AMLnZu9eKk4Nd16fX4Rn1TF1G7ReluwOl6M5558FTYAM=s176-c-k-c0x00ffffff-no-rj",
|
||||
width: 176,
|
||||
height: 176,
|
||||
),
|
||||
],
|
||||
description: "NO SCRIPT, NO FEAR, ALL OPINION\nAn off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers\nHosted by Dave Jones from Sydney Australia\n\nDONATIONS:\nBitcoin: 3KqyH1U3qrMPnkLufM2oHDU7YB4zVZeFyZ\nEthereum: 0x99ccc4d2654ba40744a1f678d9868ecb15e91206\nPayPal: david@alternatezone.com\n\nPatreon: https://www.patreon.com/eevblog\n\nEEVblog2: http://www.youtube.com/EEVblog2\nEEVdiscover: https://www.youtube.com/channel/UCkGvUEt8iQLmq3aJIMjT2qQ\n\nEMAIL:\nAdvertising/Commercial: eevblog+business@gmail.com\nFan mail: eevblog+fan@gmail.com\nHate Mail: eevblog+hate@gmail.com\n\nI DON\'T DO PAID VIDEO SPONSORSHIPS, DON\'T ASK!\n\nPLEASE:\nDo NOT ask for personal advice on something, post it in the EEVblog forum.\nI read ALL email, but please don\'t be offended if I don\'t have time to reply, I get a LOT of email.\n\nMailbag\nPO Box 7949\nBaulkham Hills NSW 2153\nAUSTRALIA",
|
||||
tags: [
|
||||
"electronics",
|
||||
"engineering",
|
||||
"maker",
|
||||
"hacker",
|
||||
"design",
|
||||
"circuit",
|
||||
"hardware",
|
||||
"pic",
|
||||
"atmel",
|
||||
"oscilloscope",
|
||||
"multimeter",
|
||||
"diy",
|
||||
"hobby",
|
||||
"review",
|
||||
"teardown",
|
||||
"microcontroller",
|
||||
"arduino",
|
||||
"video",
|
||||
"blog",
|
||||
"tutorial",
|
||||
"how-to",
|
||||
"interview",
|
||||
"rant",
|
||||
"industry",
|
||||
"news",
|
||||
"mailbag",
|
||||
"dumpster diving",
|
||||
"debunking",
|
||||
],
|
||||
vanity_url: Some("https://www.youtube.com/c/EevblogDave"),
|
||||
banner: [
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 1060,
|
||||
height: 175,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1138-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 1138,
|
||||
height: 188,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1707-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 1707,
|
||||
height: 283,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2120-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 2120,
|
||||
height: 351,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2276-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 2276,
|
||||
height: 377,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 2560,
|
||||
height: 424,
|
||||
),
|
||||
],
|
||||
mobile_banner: [
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w320-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 320,
|
||||
height: 88,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w640-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 640,
|
||||
height: 175,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w960-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 960,
|
||||
height: 263,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1280-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 1280,
|
||||
height: 351,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1440-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj",
|
||||
width: 1440,
|
||||
height: 395,
|
||||
),
|
||||
],
|
||||
tv_banner: [
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w320-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj",
|
||||
width: 320,
|
||||
height: 180,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w854-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj",
|
||||
width: 854,
|
||||
height: 480,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1280-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj",
|
||||
width: 1280,
|
||||
height: 720,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1920-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj",
|
||||
width: 1920,
|
||||
height: 1080,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2120-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj",
|
||||
width: 2120,
|
||||
height: 1192,
|
||||
),
|
||||
],
|
||||
content: Paginator(
|
||||
count: None,
|
||||
items: [
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHtOV3AEwhuea4TnviddKfAj",
|
||||
name: "MacGyver Project",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/4yosozyeIP4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAkwsCiJjFkWhYxtcg5NgfnQbkZrA",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHuvHE5GQrQJxWXHdmW2l5IF",
|
||||
name: "Calculators",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/S3R4r2xvVYQ/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLB7HH5drG-33c1SyRe9kyZBrXvm3A",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHs6wRwVSaErU0BEnLiHfnKJ",
|
||||
name: "BM235",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/WPyEFB4cHkA/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAzBuQFV8T9hM8adlPvv58C9TeDug",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(9),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHu4k0ZkKFLsysSB5iava6Qu",
|
||||
name: "Vibration Measurement",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/uus_cpZiqsU/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCqdsjWVFaLOkEcXgbZD2Eca8MnuQ",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHtdQF-m5UFZ5GEjABadI3kI",
|
||||
name: "Component Selection",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/uq1DMWtjL2U/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAbgb1Jdb5P69JGdZQ-a8asLLyYdA",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(4),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHtlndPUSOPgsujUdq1c5Mr9",
|
||||
name: "Solar Roadways",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/oIImmlfCyzo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBxApgyGu3dNXRGoqLctVUnESpEIA",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(18),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvD6M_7WeN071OVsZFE0_q-",
|
||||
name: "Electronics Tutorials - AC Theory Series",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/rrPtvYYJ2-g/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBEVc71xxSjJ-xlA_dDQaYIjdHyUw",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(3),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK",
|
||||
name: "Electronics Tutorial - DC Fundamentals",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/xSRe_4TQbuo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDP4V24_MG6vzvUZsHep9WFSCCY6Q",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(8),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvIDfW3x2p4BY6l4RYgfBJE",
|
||||
name: "Oscilloscope Probing",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/OiAmER1OJh4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAXeGAvEc8y3pEsPUxWdsNIP9UmPw",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(13),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHu6Jjb8U82eKQfvKhJVl0Bu",
|
||||
name: "Thermal Design",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/8ruFVmxf0zs/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCkE6yS4th9AsfNku19dhbZl4CbXA",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(9),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHs-X2Awg33PCBNrP2BGFVhC",
|
||||
name: "Electric Cars",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/CPcZm1Tu5VI/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCsm8De0QaHPaeCZqxMp_F464fWzg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(7),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHuLODLTeq3PM-OJRP2nzNUa",
|
||||
name: "Designing a better uCurrent",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/0AEVilxXAAo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCjotFuRjPPBHd2LWzt3lviPj9HaA",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(3),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHtvTKP4RTNW1-08Kmzy1pvA",
|
||||
name: "EMC Compliance & Measurement",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/lYmfVMWbIHQ/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBtygEqMXx7Lwe5SuBWt2q0CSahYA",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(8),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHuUTpCrTVX7BdU68l2aVqMv",
|
||||
name: "Power Counter Display Project",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/nTpE1Nw3Yy4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAbPl28_i7isizY6A1t2_c6gV8BAQ",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvm120Tq40nKrM5SUBlolN3",
|
||||
name: "Live - Ask Dave",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/gQ7TTuiDH1M/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBMnucUil90WeDSIeFz8mZCOtEv9g",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(3),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHsiF93KOLoF1KAHArmIW9lC",
|
||||
name: "Padauk Microcontroller",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/r45r4rV5JOI/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCn4kGWcjBOhk3vN8QPMDa9L3mkKA",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(10),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvxTzBLwUFw4My4rtrNFzED",
|
||||
name: "Other Debunking Videos",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/WopuF9vD7KE/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBv5buh3qMs4feQaPj6Fy6bxl_vuA",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHt2pJ7X5tumuM4Wa3r1OC7Q",
|
||||
name: "Audio & Speakers",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/qHbkw0Gm7pk/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCJBYXTDttGHTm51j3bfwqxOqVFig",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(9),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHtX7OearWdmqGzqiu4DHKWi",
|
||||
name: "Cameras",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/g9umAQ1-an4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCB5jNm9U-rypnpthK_N321LpYWew",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(16),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHu-TaNRp27_PiXjBG5wY9Gv",
|
||||
name: "Cryptocurrency",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/ibPgfzd9zd8/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDe3IXT88HR3XxnxfqrpAxh6pfYMg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(7),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvmK-VGcZ33ZuATmcNB8tvH",
|
||||
name: "LCD Tutorial",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/ZYvxgl-9tNM/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDv2WT4Chl1_H2G43AjfSFpPcKVoA",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(6),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvbV8x_bWQBKEg4IshWjG3U",
|
||||
name: "Guest Videos",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/vr8ROiYs8AQ/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLB3-0simU6JRFu9oztPXxqg_dgpGg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(12),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHs5tuhiqdxQeegsLDP7TM8V",
|
||||
name: "Software Development",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/-_rqzsJy_Qs/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBfgyRT22Y0kXITD5pTNU5BkKG31Q",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHu328BlpUOUDsv9Kf1Ri8Tg",
|
||||
name: "John Kenny - Keysight",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/ewtdnzlv0Rg/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAzFf6hh75LI2ldJq-EyV4Ke9WBtg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(5),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvj_E5KUBluJJupXmideiZk",
|
||||
name: "General Tech Information",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/f0uvS80YIGU/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLA4L-gzgcRGOdzbQOV6Wd6hw_d6og",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHsWHPg1KlSd8agKbrcn3Dwn",
|
||||
name: "Microscope",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/-JDsRZ4nmbo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCnVvEd6IDEuMlyZkP8hpeTkEA4SQ",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(4),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHuQb5djEVLzwBSTT27p2dXB",
|
||||
name: "The Signal Path",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/g3y_Vr8ZJ7w/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAx4HS5YSjouN2nc6A40Bp5ffmK1Q",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHstMIbtLqlEiidVjj8ob0xp",
|
||||
name: "Thermal Imaging",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/NznO-DVfLd0/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCUMV2m5W3Y3tzSQipHpoRBqnBqfw",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHugqRHdt46SN9Bmoh-D5Gp2",
|
||||
name: "EEVacademy",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/hFvqEfZfMtA/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCnfuvZnlr0XbuNbDrwF0SVrbTsQg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(9),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHtqqYM7ON99sbyiokMKrwwI",
|
||||
name: "Brainstorming",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/p5jpxZbGp0Y/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLC10fWKf9O9VVPVSEpEjioljWzl_Q",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(1),
|
||||
),
|
||||
],
|
||||
ctoken: Some("4qmFsgLCARIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGnRFZ2x3YkdGNWJHbHpkSE1ZQXlBQk1BRTRBZW9EUEVOblRrUlJhbEZUU2tKSmFWVkZlREpVTW5oVVdsZG9UMlJJVmtsa1NFWjRWMVV3TTFRd05EVlBXRTVwWlZkc2RtRXdNVXhqYm1RelUxTm5PQSUzRCUzRJoCL2Jyb3dzZS1mZWVkVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RcGxheWxpc3RzMTA0"),
|
||||
),
|
||||
)
|
||||
|
|
@ -0,0 +1,370 @@
|
|||
---
|
||||
source: src/client/channel.rs
|
||||
expression: map_res.c
|
||||
---
|
||||
Paginator(
|
||||
count: None,
|
||||
items: [
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHutdg1kZkG7aAYhjoJnk2fc",
|
||||
name: "Nixie Tube Display Project",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/7uogKucrPks/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAtWPSsdS1RErJHwmFaG_QOb2x6Cg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(9),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHujYmL_-5CBUg-za2osSUVI",
|
||||
name: "Mystery Teardown",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/IpdJEo9r-HQ/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAkNA_CI47DVgUxI1p1ZBhouoq1Qw",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(16),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHuGQmy-eJgqB28b2AWKteuG",
|
||||
name: "EEVsmoke",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/U_QoWa6qXeo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBs8GgzTlhrJoIJ82YNfJNVI_WzWg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHuSab0CmpulB2Wv8Kz0985m",
|
||||
name: "EEVcomments",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/lgtooEtk9R4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLClU7VCLF3zB4RblCQmRKQGwaNi_w",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvtQ5FxEivbCGxp4t3W8zKE",
|
||||
name: "Spectrum Analyser",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/1QBFIfKlvHU/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDcSzeWwuSWhdB5K5sfAEvV-2zFVA",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(11),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHuJUxiTbVKHzWjvIVf1NVOl",
|
||||
name: "Space",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/ADJwChUtdDQ/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBqY36Hfzg4st9eK_a4NX77cKHbRw",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(5),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHtTXTVCXVDIRKV442ynD7Pz",
|
||||
name: "Lunar Rover",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/ADJwChUtdDQ/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBqY36Hfzg4st9eK_a4NX77cKHbRw",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHsma5qL7piUiM5N4IOyuQyx",
|
||||
name: "Wayback Wednesday",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/QgTF32aQJUo/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLByGKIwXahA_ZqJ_5X_HAS4Keyevw",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvLb_HJBKqbgZ9IvEX-pVOF",
|
||||
name: "Magazines",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/3cIkk05VHsM/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAGAbiuY2PzGsECCb8aFtjOLfJU2Q",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(4),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHugE85Y_LckT4EhrKwo7WQe",
|
||||
name: "Embedded Computing",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/lPDOrFuQD3g/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLB3zQ9sqeyzqdq45HmOJzojMywhRg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(4),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHu3GsTHwHoAXlWVcL3c3dA0",
|
||||
name: "High Speed Camera",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/ptWr0jS-aL8/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLB8ENWo_0aMfdpT-1NzJIcwRQLNJg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvTyDxI-_RDK8UlPbJ5FNf9",
|
||||
name: "Announcements & Misc",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/KdpQNYc_qRc/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDsXBDqGVxFLZcMnYXIDEcpFj62gQ",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(28),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHtT17_AeYMe-EOS_GXCBQQ1",
|
||||
name: "Interviews",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/V1eivQNtulE/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCGotwWngljm-XgCyAIC6bLThV4Mg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(9),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHsCTtj-T_vkpTTbBXW4sB51",
|
||||
name: "Oscilloscope Tutorials",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/DMXiD3dKYJc/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAUHrYFlazW-GuM2J7aWw6CBwlN1Q",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(38),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHsKCtJJ_rlRP5qE7lN-1EMX",
|
||||
name: "Anti-Static ESD",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/nvgW5iWXbts/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCGbknAoNqsJK6Af1X6K3D_MBTxjg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(7),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvFf9a2swL8QVMwji0wT3ha",
|
||||
name: "Unboxing",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/S7NoK2fiUD4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDOeXkiWjyW-Cg8Lt8z2mngQyJk6Q",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(2),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHtn9n6n-uB8VNCTrERwYxLZ",
|
||||
name: "Power Supplies",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/UI0aVEko7ic/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBaWh0sXZgr-E5-DHsTEDmZtsVOEg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(43),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHuo-6paPTh3ji7AEMpnSna6",
|
||||
name: "CNC Milling Machine",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/tV25auv4SAE/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLD3ibkSVm-5fRSkZ9WMPMjYXWzbTQ",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(1),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvpVeLXSGlS7EBlY3zKfIXh",
|
||||
name: "Capacitors",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/xlvqUts9H9c/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBjsULWSsEWg2WM_9afnuGlJuGqXw",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(15),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHsNGit9YgkuxsFtFNJxwgot",
|
||||
name: "PCB Assembly",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/porhgJ5Znrc/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCzsh4kyVE5A71khhI1XjjIej08NQ",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(5),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvsggk5TwGdR2BZcoKRkQ2I",
|
||||
name: "3D Printing",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/fTuL_nKSKFg/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLB6NL2_MaX4bcdTi3EIGxJfpUusrg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(6),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHtH_DR5hAIGQ-Ty6f9TZWNV",
|
||||
name: "Video Editing / PC Builds",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/YBuqISRPkEI/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCbYqDzHvixOKNI2O6-ouTfaYBXyQ",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(3),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvPZ1-dDC449w_r2M0R4jtc",
|
||||
name: "Solar Power Systems",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/fQAd7nposJQ/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCwijls6Q9iKxYKtQHxw8EBl9Uo_A",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(19),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHtolTr61FnHtvZb6tRPrs8m",
|
||||
name: "EEVblab",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/9_qhlFc-MVU/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLArBfGFU7VJj37Lg8MxvRjOGEUqcw",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(101),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHsc8y1buFPJZaD1kKzIxpWL",
|
||||
name: "Repairs",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/h6D4MMWjrmM/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDOYhACPdKKTxr9WXyhQNvc49Vziw",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(78),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvBpmbLABRmSKv2b0C4LWV_",
|
||||
name: "Debunking",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/HOZBrHqTJk4/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCVTH36iKNVL8AFH3RQ-xsFyxeWxw",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(73),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHs_8iObryqVCeqLIo5KTFQ-",
|
||||
name: "Lab Bench Builds + ESD Mats",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/vuUSIt3rbyU/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAxyWgAQkMNP-vNjD1ToV74WGD9Lg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(9),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvatF_8oJ2qpKxi_wWw6YN4",
|
||||
name: "Reverse Engineering",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/lJVrTV_BeGg/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLA0qbMgSaroaIo9tsd1LvJH9f9dDQ",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(10),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvwQR69zYRyxSkujQs2SgLl",
|
||||
name: "Scams",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/i3B_KKyntQE/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDXYuBZWDV4J9ZGErX4MS7cOsJ6yg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(5),
|
||||
),
|
||||
ChannelPlaylist(
|
||||
id: "PLvOlSehNtuHvRvEU3VebO2JHa1I_iIAQD",
|
||||
name: "Hacking / Experiments",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/XWnylXMrMII/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLBQ2ylnRFQssVe3B-MtkVcTPfyZBg",
|
||||
width: 480,
|
||||
height: 270,
|
||||
),
|
||||
],
|
||||
video_count: Some(63),
|
||||
),
|
||||
],
|
||||
ctoken: Some("4qmFsgLCARIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGnRFZ2x3YkdGNWJHbHpkSE1ZQXlBQk1BRTRBZW9EUEVOblRrUlJhbEZUU2tKSmFWVkZlREpVTW5oVVdsZG9UMlJJVmtsa2JFb3lVbFpWZWxadFZtbFVla3BMVTBkRmVGTldPWEJUVlVaU1VrTm5PQSUzRCUzRJoCL2Jyb3dzZS1mZWVkVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RcGxheWxpc3RzMTA0"),
|
||||
)
|
||||
|
|
@ -0,0 +1,970 @@
|
|||
---
|
||||
source: src/client/channel.rs
|
||||
expression: map_res.c
|
||||
---
|
||||
Paginator(
|
||||
count: None,
|
||||
items: [
|
||||
ChannelVideo(
|
||||
id: "R2fw2g6WFbg",
|
||||
title: "EEVblog 1477 - TEARDOWN! - NEW Tektronix 2 Series Oscilloscope",
|
||||
length: Some(2718),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/R2fw2g6WFbg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBwd6wqvFI0HcPpOkDW_XDzWSPH_w",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/R2fw2g6WFbg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDuoKzNwygQX0_ilJIpfo3U36mtxQ",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/R2fw2g6WFbg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBSHLSMeSK7A61DxrsipNANcnBXxQ",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/R2fw2g6WFbg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCxrR2pNosEHIy_xxC5tp7v2w2tPw",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: Some(80296),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "JDXKrXJloSw",
|
||||
title: "EEVblog 1476 - Keithley 515A Wheatstone Bridge TEARDOWN & TUTORIAL",
|
||||
length: Some(1721),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/JDXKrXJloSw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCk0u4EnX8f6ud7s704sbv5UGFZug",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/JDXKrXJloSw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDP9mgeJI1CVTBCQ7Rn-X-j9Jycww",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/JDXKrXJloSw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAF9cGhMzxOyWML2HjmicjFu3609g",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/JDXKrXJloSw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBHBGp63lGpQB3NufNurz9VW4bc7g",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: Some(36294),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "H8ot_YPi6QU",
|
||||
title: "eevBLAB 98 - The Pressure Youtubers Are Under",
|
||||
length: Some(431),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/H8ot_YPi6QU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBiimvgnZx6akYlMkU-hxSuIM33Mg",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/H8ot_YPi6QU/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDOpegM_mWU_d44VGhbwc22ePg9fA",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/H8ot_YPi6QU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA-GLJJARJ7Whw_zWo1pKDTDkBCpg",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/H8ot_YPi6QU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBuELgu2kMxNH4CGLvSnxmCNtla_Q",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: Some(34736),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "i1Ad5jfk_v4",
|
||||
title: "EEVblog 1475 - What\'s This SMD Part?",
|
||||
length: Some(1785),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/i1Ad5jfk_v4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCxhWKrpuy11lTv5po8m7OyQYxbvA",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/i1Ad5jfk_v4/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDef1o7qpthU6sJMXjjwHZ3Oqf_hw",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/i1Ad5jfk_v4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDBt0YBGTSQlw9qnX8yVD2Yjnrtmw",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/i1Ad5jfk_v4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA-q__bcXjNcXEoR-vjItds77-5rQ",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("3 months ago"),
|
||||
view_count: Some(73544),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "GHbo4v8pahc",
|
||||
title: "eevBLAB 97 - Is Apple Serious About Right To Repair? (The Verge)",
|
||||
length: Some(1186),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/GHbo4v8pahc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBKNYL8XTxa9LDJKG6L7unv3CJG9Q",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/GHbo4v8pahc/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBqhk2e880tzuXjOTLpWOSKlwgiTQ",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/GHbo4v8pahc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAPQ78YIrVaolLCX0xvNe1FYk4tAQ",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/GHbo4v8pahc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCfHHyWth7HAPLhYU-WTZuvYv4bxA",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: Some(67231),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "Uds-wLoaZmA",
|
||||
title: "EEVblog 1474 - Can You Measure Capacitors IN Circuit?",
|
||||
length: Some(1407),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/Uds-wLoaZmA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLASo0gEqEXqljW-KjeCb2jcr8Wxkw",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/Uds-wLoaZmA/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-2hcr1cWYXbn-VrWQiuEgvVw-Xw",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/Uds-wLoaZmA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB1qfgnGi32Hb-dju_uTzKvp0nmvw",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/Uds-wLoaZmA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDNu1DBaHQlSXiQIG2drkpboSbHbw",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: Some(44946),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "D9J-AmCcf4U",
|
||||
title: "EEVblog 1473 - How Your LCR Meter Works",
|
||||
length: Some(1183),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/D9J-AmCcf4U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBO_KDd4KRJX5K0ea3of2pm_Pp3dw",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/D9J-AmCcf4U/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCpUbV0j7sgqOX_3e2AjCIIdqUMSw",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/D9J-AmCcf4U/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC2t1SJmgX5NVuN-W9qjPkXDBDyew",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/D9J-AmCcf4U/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAkSkj54WBcZLoxP4aBT9UinTitng",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: Some(43264),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "Eoh-JKVQZwg",
|
||||
title: "EEVblog 1472 - Resistor Cube Problem SOLVED",
|
||||
length: Some(1196),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/Eoh-JKVQZwg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA7JkB7fkv4gOeXl4-B9VWSSsbkDw",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/Eoh-JKVQZwg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCJqg51qh9_ph6Y9q9uz302AwX0GQ",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/Eoh-JKVQZwg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCa4ITkjmkEKEIJJQRWjKhu3q_T3Q",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/Eoh-JKVQZwg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDfWJzduhf5wc8vS5QT-EkhZxosHg",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: Some(98175),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "U81glZBDpIg",
|
||||
title: "EEVblog 1471 - Mailbag",
|
||||
length: Some(2252),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/U81glZBDpIg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCfgd3GSfLFioa89tLill31Zl7gOg",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/U81glZBDpIg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBEKWSqugYCKZfsH-hN8zE_D-ROSg",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/U81glZBDpIg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBA3b2qfDKvmA_h2nMQoF7Se6-AOA",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/U81glZBDpIg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB9x4BNeYLsZ6y0zy0n-uDYA_ByCw",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("4 months ago"),
|
||||
view_count: Some(59376),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "gLfxznVJ2q0",
|
||||
title: "Petition - Australian Standards Should be FREE",
|
||||
length: Some(585),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/gLfxznVJ2q0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDCSXOJMOfUPep7AbUFPFEW2e-KFA",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/gLfxznVJ2q0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBEhu3Mi8aNdGe0DtBZwQbU0VsPBA",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/gLfxznVJ2q0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAyddn2YV5-kHe637vfTKW0YZjpjg",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/gLfxznVJ2q0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC4tGGAEnZtnTc9-kaGbQaMRpAN4Q",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("5 months ago"),
|
||||
view_count: Some(25496),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "GfihUkWPCQQ",
|
||||
title: "EEVblog 1470 - AC Basics Tutorial Part 3 - Complex Numbers are EASY!",
|
||||
length: Some(1468),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/GfihUkWPCQQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBTbyr1AEDanXKDJg18zCEDN5YKCg",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/GfihUkWPCQQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBMI4WclkmxCxYxX-GGNlCREfYy_w",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/GfihUkWPCQQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCNGFKnO9oxnQy3zMfbNV2yBUun0A",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/GfihUkWPCQQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDrGmoHSXxoZsFLkDt7TLqNSFI0Dg",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("5 months ago"),
|
||||
view_count: Some(22982),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "yEG6pKUdIlg",
|
||||
title: "EEVblog 1469 - AC Basics Tutorial - Part 2 - Phasors",
|
||||
length: Some(1147),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/yEG6pKUdIlg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAavMqXRQQP8Qs6jPDdCaZdjj28sw",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/yEG6pKUdIlg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD5SIrhW3EppC7S5D3v0C4sRRIkWw",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/yEG6pKUdIlg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDgNM-cIitvxxZcxx3DG1qeyXdmEA",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/yEG6pKUdIlg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA55TnBHmQ90cIjynGfySBf3TAbsw",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("5 months ago"),
|
||||
view_count: Some(38804),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "wPzzPGzxD00",
|
||||
title: "EEVblog 1468 - Electronex Show Tour 2022",
|
||||
length: Some(2850),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/wPzzPGzxD00/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA3HoFx0YDm9C54Wn8lPV-hqHmLBA",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/wPzzPGzxD00/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLARDz3vlQih0JUc4kS78Co6fxi9zA",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/wPzzPGzxD00/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAKMD-PPJglubTE42NBXawpGwO9bg",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/wPzzPGzxD00/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBoj0usdvhlWnXadesKerqogp6zRA",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("5 months ago"),
|
||||
view_count: Some(25505),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "Tdge8vEODeY",
|
||||
title: "EEVblog 1467 - Stanford Solar Power at Nightime! BUSTED",
|
||||
length: Some(836),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/Tdge8vEODeY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCcLhiajXRRNS9OAmsMeX1ploYVog",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/Tdge8vEODeY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAj1doNz5lrIsCWHhCFHZCxsUUEAA",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/Tdge8vEODeY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB6my3cj69pSkEXWdLSQoXQ8OTr-g",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/Tdge8vEODeY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCXIwvkXojHBQnDvuKSvAM3ePbY4Q",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("5 months ago"),
|
||||
view_count: Some(98432),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "ebQ2Im5zfT0",
|
||||
title: "EEVblog 1466 - Dumpster Dive Xeon Server",
|
||||
length: Some(1138),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/ebQ2Im5zfT0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBfBPfDfHepn92nrxb-l3GoEUJxNg",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/ebQ2Im5zfT0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCZTC1Pr28bD1ouBcTavpaa_LmaIA",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/ebQ2Im5zfT0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLABsinfBoimn2O_zp984GhuMedELA",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/ebQ2Im5zfT0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDy_rT1jU0niVvuWM0KlJpGeekZyQ",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("5 months ago"),
|
||||
view_count: Some(53410),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "UrS5ezesA9s",
|
||||
title: "EEVblog 1465 - Your Multimeter Can Measure Inductors",
|
||||
length: Some(596),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/UrS5ezesA9s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDhubVMAa4lD0PEkWJwxngLFy2g5A",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/UrS5ezesA9s/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCJEKnJlGned_3v4XmiTUbrsSZLNw",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/UrS5ezesA9s/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCQWi8yvRKaqMMKpG022n1USvCBWg",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/UrS5ezesA9s/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAuMTY3srN7WsRMhJxsloubTzDtQg",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("5 months ago"),
|
||||
view_count: Some(54771),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "c5M8P6oe9xY",
|
||||
title: "EEVblog 1464 - TOP 5 Jellybean Comparators",
|
||||
length: Some(2399),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/c5M8P6oe9xY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBBbPtmLMOKuiIB4l1Z_VuF8ajH1g",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/c5M8P6oe9xY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCihINW-Fv_dQ3IX_wJSD7qITrHfQ",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/c5M8P6oe9xY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDLM6HB8eUy0IpmWzr1uPbjugLuew",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/c5M8P6oe9xY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA01LL_xU-hIeDpy9vSOqA1I0ICXg",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: Some(39823),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "9TDKP9RLlPs",
|
||||
title: "EEVblog 1463 - Mailbag",
|
||||
length: Some(2664),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/9TDKP9RLlPs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBC8e8sMlrwsvUamlxaJGvSAB1vAQ",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/9TDKP9RLlPs/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDfArgKVhHFFoI394mCg_XE3Wei6g",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/9TDKP9RLlPs/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDXfY9lwIVDusvOaV6ocjC7aBw5vw",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/9TDKP9RLlPs/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCkTdJTeQc1cYTWMzeFl3Jq1B6Mpg",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: Some(51596),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "hwggIw2HQuQ",
|
||||
title: "eevBLAB 96 - BUSTED! - Dymo Gets WORSE!",
|
||||
length: Some(347),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/hwggIw2HQuQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBrARGU_K_yrxFuO5Fx0a2sznKUCA",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/hwggIw2HQuQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDK9IunmYhZL6P3R4msH7TkQWCX5A",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/hwggIw2HQuQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA4mUZjwSnMJMlAmrwEw7SPSv58KA",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/hwggIw2HQuQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDiUYwb0oj_plM5pYy2162pDjNDxw",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: Some(125391),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "xzSDJRC0F6c",
|
||||
title: "EEVblog 1462 - Why Dymo Label Printers SUCK!",
|
||||
length: Some(1353),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/xzSDJRC0F6c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAG9svGIbJ61gBv2XurBBjdj7eWaA",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/xzSDJRC0F6c/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDoqZA8Gx8gY_FLjeoRIRKMG7wjbQ",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/xzSDJRC0F6c/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDATV03jYmr-LvD-D4UEKwlUxVluw",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/xzSDJRC0F6c/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC5m7sv2ryiTWCPca7mKgKnLpv6Sg",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: Some(120457),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "9wuyPZjjR9k",
|
||||
title: "EEVblog 1461 - The MOSFET Search CHALLENGE",
|
||||
length: Some(3505),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/9wuyPZjjR9k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBhLudpzPSKR-vnRpUF61-upI5W4A",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/9wuyPZjjR9k/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDXplqG0PHq4OcLmke-FWCFCVd4mA",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/9wuyPZjjR9k/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB7mZ-ZXrWYa2KzFj2y0Yc_Zydcuw",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/9wuyPZjjR9k/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCLlZ23xsw-FySMuZn4T22qPzMm8A",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: Some(49062),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "vyJuMGEFbjQ",
|
||||
title: "EEVblog1460 - REPAIRING a LED Studio Light with a DUMPSTER LAPTOP!",
|
||||
length: Some(1798),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/vyJuMGEFbjQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLConLvhiiORxzI4W53cK838-oimWA",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/vyJuMGEFbjQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC8qAl36_iWoZAu17Iy8YNoN1_zfA",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/vyJuMGEFbjQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDSzE9BzI0DAGRZldbXXeWXtZVVlg",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/vyJuMGEFbjQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC9ymYRIGof-5xuhl4T7gv2FLvsLw",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("6 months ago"),
|
||||
view_count: Some(49032),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "_pETMto-9iE",
|
||||
title: "EEVblog 1459 - Is it worth PARTS SALVAGING an Inkjet Printer/Scanner?",
|
||||
length: Some(1588),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/_pETMto-9iE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLANwQQorgH71g8SZTkT6gi8SjkDCQ",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/_pETMto-9iE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDl76e8qzIlOQaURaKurvsKbuSj7A",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/_pETMto-9iE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBW6T8ujpDGxy1A4_vACQu2sloa7w",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/_pETMto-9iE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAqS3iMeFQQNefvZS_1OkojnPYJbw",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: Some(64108),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "MvFf9RSJUhk",
|
||||
title: "EEVblog 1458 - Microscope Polarising MAGIC!",
|
||||
length: Some(942),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/MvFf9RSJUhk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAOkBS4oJiQHsbt_NMdXftPeUaR8A",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/MvFf9RSJUhk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDkS_ttHQh0W85pH9hEMmAYs1Xzfw",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/MvFf9RSJUhk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBL59K98hTe0gXIz6lXpa8SwrDB-g",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/MvFf9RSJUhk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDbj4ZsY0tTVhZjnrz1CQdxiBzEiA",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: Some(76831),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "E6obq3T71vI",
|
||||
title: "EEVblog1457 - Old School Mailbag - ESC Burnout",
|
||||
length: Some(1552),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/E6obq3T71vI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA24jAiRp_-m1MJQATFhdbrRqFnHA",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/E6obq3T71vI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB_CIBq57_N9N6hx0inPbmRt4MYhA",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/E6obq3T71vI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDnYGjrGBBO2VxivmddlpqZL7G4sA",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/E6obq3T71vI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAsmpwO5F_QjW9TPNyB1BduG21Uiw",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: Some(49961),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "ZTwVQmUm6NY",
|
||||
title: "eevBLAB 95 - Why Are Youtube Playlists So BAD?",
|
||||
length: Some(865),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/ZTwVQmUm6NY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAi4YH3QhTYvY5be4zeqST3PZ7EBA",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/ZTwVQmUm6NY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD5bfW8_geDmav4fZRkBIoP-DsACQ",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/ZTwVQmUm6NY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDLqZNDw1LK8yACqZLuMfD1wK3z6g",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/ZTwVQmUm6NY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAUI2iQUNQla1I2iGfynsoVBKQwzA",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: Some(17393),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "prQinQ4MWmU",
|
||||
title: "EEVblog 1456 - Sega Toys Homestar Planetarium REPAIR",
|
||||
length: Some(899),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/prQinQ4MWmU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDXaQgmCdFsIkM5Yt0Req7NWHELjQ",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/prQinQ4MWmU/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5jjClMCi3VKxrxTwlpNycDHRILQ",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/prQinQ4MWmU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAbk80-ceB8c8OhLDbpOR2EaEYl4A",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/prQinQ4MWmU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAGvNQs-1z44mVcygV86GMnS4Qp0w",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: Some(38281),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "yMIzsFAztv4",
|
||||
title: "EEVblog 1455 - Capacitors Produce Current During Reflow Soldering! WTF!",
|
||||
length: Some(894),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/yMIzsFAztv4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDcBhR3clJQxbrPONzQJ9nUNd_0OA",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/yMIzsFAztv4/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBXj_xSNvJ2ydBzV4xKwi4FEIDahg",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/yMIzsFAztv4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAUUK4vBj0JJjNqCR5M7xzSxfaS8A",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/yMIzsFAztv4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBg7A2VopA3daXfdUli8s2Cj1_LlA",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: Some(70004),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "QtqljdMwRyk",
|
||||
title: "EEVblog 1454 - Water from Air AGAIN! - The Kara Pure",
|
||||
length: Some(1198),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/QtqljdMwRyk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDERzxdJPJQ7T_UhqojqFaACgzFvA",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/QtqljdMwRyk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDdaa0lEaeOHA8BGRVvXW_PbD79rA",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/QtqljdMwRyk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDAkiwvdVZm0hhcoQSYxX5eFkWVhg",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/QtqljdMwRyk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDIOLza0s7w6gM2M84n_ql8eMzT6g",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: Some(93700),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
ChannelVideo(
|
||||
id: "kcWwAweWjQg",
|
||||
title: "EEVblog 1453 - Elgato Key Light TEARDOWN",
|
||||
length: Some(1048),
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/kcWwAweWjQg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLASIZUAaqbklehN0AG_xn6QDrREog",
|
||||
width: 168,
|
||||
height: 94,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/kcWwAweWjQg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB4BClIc7vKmndVvmJuOFXX49J5KA",
|
||||
width: 196,
|
||||
height: 110,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/kcWwAweWjQg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDJX7QLVpVrDHHM7PloZI8hqDPjEQ",
|
||||
width: 246,
|
||||
height: 138,
|
||||
),
|
||||
Thumbnail(
|
||||
url: "https://i.ytimg.com/vi/kcWwAweWjQg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDWNJYB3GA5AMMB_PjBOuysLXtnhQ",
|
||||
width: 336,
|
||||
height: 188,
|
||||
),
|
||||
],
|
||||
publish_date: "[date]",
|
||||
publish_date_txt: Some("7 months ago"),
|
||||
view_count: Some(37515),
|
||||
is_live: false,
|
||||
is_short: false,
|
||||
),
|
||||
],
|
||||
ctoken: Some("4qmFsgKxARIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGmZFZ1oyYVdSbGIzTVlBeUFBTUFFNEFlb0ROME5uVGtSU1JXdFRRM2RwU1cxMGNUaHpTVVJ6TkhCRlFrdEVTWGRCYW1jNFVXZHpTUzFRUkVodFVWbFJhVzloY0VWclowTlZSRWslM0SaAixicm93c2UtZmVlZFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUXZpZGVvczEwMg%3D%3D"),
|
||||
)
|
||||
|
|
@ -16,7 +16,7 @@ use crate::{
|
|||
|
||||
use super::{
|
||||
response::{self, IconType, IsLive},
|
||||
ClientType, MapResponse, RustyPipeQuery, YTContext,
|
||||
ClientType, MapResponse, QContinuation, RustyPipeQuery, YTContext,
|
||||
};
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
|
|
@ -30,12 +30,6 @@ struct QVideo {
|
|||
racy_check_ok: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
struct QVideoCont {
|
||||
context: YTContext,
|
||||
continuation: String,
|
||||
}
|
||||
|
||||
impl RustyPipeQuery {
|
||||
pub async fn video_details(self, video_id: &str) -> Result<VideoDetails> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
|
|
@ -59,7 +53,7 @@ impl RustyPipeQuery {
|
|||
|
||||
pub async fn video_recommendations(self, ctoken: &str) -> Result<Paginator<RecommendedVideo>> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
let request_body = QVideoCont {
|
||||
let request_body = QContinuation {
|
||||
context,
|
||||
continuation: ctoken.to_owned(),
|
||||
};
|
||||
|
|
@ -77,7 +71,7 @@ impl RustyPipeQuery {
|
|||
|
||||
pub async fn video_comments(self, ctoken: &str) -> Result<Paginator<Comment>> {
|
||||
let context = self.get_context(ClientType::Desktop, true).await;
|
||||
let request_body = QVideoCont {
|
||||
let request_body = QContinuation {
|
||||
context,
|
||||
continuation: ctoken.to_owned(),
|
||||
};
|
||||
|
|
|
|||
7038
testfiles/channel/channel_playlists_cont.json
Normal file
7038
testfiles/channel/channel_playlists_cont.json
Normal file
File diff suppressed because it is too large
Load diff
10376
testfiles/channel/channel_videos_cont.json
Normal file
10376
testfiles/channel/channel_videos_cont.json
Normal file
File diff suppressed because it is too large
Load diff
Reference in a new issue