diff --git a/codegen/src/download_testfiles.rs b/codegen/src/download_testfiles.rs index 658fce3..58a19d3 100644 --- a/codegen/src/download_testfiles.rs +++ b/codegen/src/download_testfiles.rs @@ -16,6 +16,7 @@ pub async fn download_testfiles(project_root: &Path) { player(&testfiles).await; player_model(&testfiles).await; playlist(&testfiles).await; + playlist_cont(&testfiles).await; video_details(&testfiles).await; comments_top(&testfiles).await; comments_latest(&testfiles).await; @@ -141,6 +142,25 @@ async fn playlist(testfiles: &Path) { } } +async fn playlist_cont(testfiles: &Path) { + let mut json_path = testfiles.to_path_buf(); + json_path.push("playlist"); + json_path.push("playlist_cont.json"); + if json_path.exists() { + return; + } + + let rp = RustyPipe::new(); + let playlist = rp + .query() + .playlist("PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ") + .await + .unwrap(); + + let rp = rp_testfile(&json_path); + playlist.videos.next(rp.query()).await.unwrap().unwrap(); +} + async fn video_details(testfiles: &Path) { for (name, id) in [ ("music", "XuM2onMGvTI"), @@ -174,9 +194,11 @@ async fn comments_top(testfiles: &Path) { let details = rp.query().video_details("ZeerrnuLi5E").await.unwrap(); let rp = rp_testfile(&json_path); - rp.query() - .video_comments(&details.top_comments.ctoken.unwrap()) + details + .top_comments + .next(rp.query()) .await + .unwrap() .unwrap(); } @@ -192,9 +214,11 @@ async fn comments_latest(testfiles: &Path) { let details = rp.query().video_details("ZeerrnuLi5E").await.unwrap(); let rp = rp_testfile(&json_path); - rp.query() - .video_comments(&details.latest_comments.ctoken.unwrap()) + details + .latest_comments + .next(rp.query()) .await + .unwrap() .unwrap(); } @@ -280,10 +304,7 @@ async fn channel_videos_cont(testfiles: &Path) { .unwrap(); let rp = rp_testfile(&json_path); - rp.query() - .channel_videos_continuation(&videos.content.ctoken.unwrap()) - .await - .unwrap(); + videos.content.next(rp.query()).await.unwrap().unwrap(); } async fn channel_playlists_cont(testfiles: &Path) { @@ -302,10 +323,7 @@ async fn channel_playlists_cont(testfiles: &Path) { .unwrap(); let rp = rp_testfile(&json_path); - rp.query() - .channel_playlists_continuation(&playlists.content.ctoken.unwrap()) - .await - .unwrap(); + playlists.content.next(rp.query()).await.unwrap().unwrap(); } async fn search(testfiles: &Path) { diff --git a/src/client/channel.rs b/src/client/channel.rs index 53fab90..99fc25a 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -3,17 +3,14 @@ use url::Url; use crate::{ error::{Error, ExtractionError}, - model::{Channel, ChannelInfo, ChannelPlaylist, ChannelVideo, Paginator}, + model::{Channel, ChannelInfo, Paginator, PlaylistItem, VideoItem}, param::{ChannelOrder, Language}, serializer::MapResult, timeago, util::{self, TryRemove}, }; -use super::{ - response::{self, FromWLang}, - ClientType, MapResponse, QContinuation, RustyPipeQuery, YTContext, -}; +use super::{response, ClientType, MapResponse, RustyPipeQuery, YTContext}; #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] @@ -41,7 +38,7 @@ impl RustyPipeQuery { pub async fn channel_videos( self, channel_id: &str, - ) -> Result>, Error> { + ) -> Result>, Error> { self.channel_videos_ordered(channel_id, ChannelOrder::default()) .await } @@ -50,7 +47,7 @@ impl RustyPipeQuery { self, channel_id: &str, order: ChannelOrder, - ) -> Result>, Error> { + ) -> Result>, Error> { let context = self.get_context(ClientType::Desktop, true).await; let request_body = QChannel { context, @@ -72,30 +69,10 @@ impl RustyPipeQuery { .await } - pub async fn channel_videos_continuation( - self, - ctoken: &str, - ) -> Result, Error> { - let context = self.get_context(ClientType::Desktop, true).await; - let request_body = QContinuation { - context, - continuation: ctoken, - }; - - self.execute_request::( - ClientType::Desktop, - "channel_videos_continuation", - ctoken, - "browse", - &request_body, - ) - .await - } - pub async fn channel_playlists( self, channel_id: &str, - ) -> Result>, Error> { + ) -> Result>, Error> { let context = self.get_context(ClientType::Desktop, true).await; let request_body = QChannel { context, @@ -113,26 +90,6 @@ impl RustyPipeQuery { .await } - pub async fn channel_playlists_continuation( - self, - ctoken: &str, - ) -> Result, Error> { - let context = self.get_context(ClientType::Desktop, true).await; - let request_body = QContinuation { - context, - continuation: ctoken, - }; - - self.execute_request::( - ClientType::Desktop, - "channel_playlists_continuation", - ctoken, - "browse", - &request_body, - ) - .await - } - pub async fn channel_info(&self, channel_id: &str) -> Result, Error> { let context = self.get_context(ClientType::Desktop, true).await; let request_body = QChannel { @@ -152,13 +109,13 @@ impl RustyPipeQuery { } } -impl MapResponse>> for response::Channel { +impl MapResponse>> for response::Channel { fn map_response( self, id: &str, lang: Language, _deobf: Option<&crate::deobfuscate::Deobfuscator>, - ) -> Result>>, ExtractionError> { + ) -> Result>>, ExtractionError> { let content = map_channel_content(self.contents, id, self.alerts)?; let grid = match content { response::channel::ChannelContent::GridRenderer { items } => Some(items), @@ -181,20 +138,22 @@ impl MapResponse>> for response::Channel { } } -impl MapResponse>> for response::Channel { +impl MapResponse>> for response::Channel { fn map_response( self, id: &str, lang: Language, _deobf: Option<&crate::deobfuscate::Deobfuscator>, - ) -> Result>>, ExtractionError> { + ) -> Result>>, ExtractionError> { let content = map_channel_content(self.contents, id, self.alerts)?; let grid = match content { response::channel::ChannelContent::GridRenderer { items } => Some(items), _ => None, }; - let p_res = grid.map(map_playlists).unwrap_or_default(); + let p_res = grid + .map(|item| map_playlists(item, lang)) + .unwrap_or_default(); Ok(MapResult { c: map_channel( @@ -267,98 +226,29 @@ impl MapResponse> for response::Channel { } } -impl MapResponse> for response::ChannelCont { - fn map_response( - self, - _id: &str, - lang: Language, - _deobf: Option<&crate::deobfuscate::Deobfuscator>, - ) -> Result>, ExtractionError> { - let mut actions = self.on_response_received_actions; - let res = actions - .try_swap_remove(0) - .ok_or(ExtractionError::Retry)? - .append_continuation_items_action - .continuation_items; - - Ok(map_videos(res, lang)) - } -} - -impl MapResponse> for response::ChannelCont { - fn map_response( - self, - _id: &str, - _lang: Language, - _deobf: Option<&crate::deobfuscate::Deobfuscator>, - ) -> Result>, ExtractionError> { - let mut actions = self.on_response_received_actions; - let res = actions - .try_swap_remove(0) - .ok_or(ExtractionError::Retry)? - .append_continuation_items_action - .continuation_items; - - Ok(map_playlists(res)) - } -} - fn map_videos( - res: MapResult>, + res: MapResult>, lang: Language, -) -> MapResult> { - let mut ctoken = None; - let videos = res - .c - .into_iter() - .filter_map(|item| match item { - response::VideoListItem::GridVideoRenderer(video) => { - Some(ChannelVideo::from_w_lang(video, lang)) - } - response::VideoListItem::RichItemRenderer { - content: response::RichItem::VideoRenderer(video), - } => Some(ChannelVideo::from_w_lang(video, lang)), - response::VideoListItem::ContinuationItemRenderer { - continuation_endpoint, - } => { - ctoken = Some(continuation_endpoint.continuation_command.token); - None - } - _ => None, - }) - .collect(); +) -> MapResult> { + let mut mapper = response::YouTubeListMapper::::new(lang); + mapper.map_response(res); MapResult { - c: Paginator::new(None, videos, ctoken), - warnings: res.warnings, + c: Paginator::new(None, mapper.items, mapper.ctoken), + warnings: mapper.warnings, } } fn map_playlists( - res: MapResult>, -) -> MapResult> { - let mut ctoken = None; - let playlists = res - .c - .into_iter() - .filter_map(|item| match item { - response::VideoListItem::GridPlaylistRenderer(playlist) => Some(playlist.into()), - response::VideoListItem::RichItemRenderer { - content: response::RichItem::PlaylistRenderer(playlist), - } => Some(playlist.into()), - response::VideoListItem::ContinuationItemRenderer { - continuation_endpoint, - } => { - ctoken = Some(continuation_endpoint.continuation_command.token); - None - } - _ => None, - }) - .collect(); + res: MapResult>, + lang: Language, +) -> MapResult> { + let mut mapper = response::YouTubeListMapper::::new(lang); + mapper.map_response(res); MapResult { - c: Paginator::new(None, playlists, ctoken), - warnings: res.warnings, + c: Paginator::new(None, mapper.items, mapper.ctoken), + warnings: mapper.warnings, } } @@ -410,6 +300,7 @@ fn map_channel( .subscriber_count_text .and_then(|txt| util::parse_large_numstr(&txt, lang)), avatar: header.avatar.into(), + verification: header.badges.into(), description: metadata.description, tags: microformat.microformat_data_renderer.tags, vanity_url, @@ -443,6 +334,7 @@ fn map_channel( .and_then(|txt| util::parse_large_numstr(txt, lang)) }), avatar: hdata.map(|hdata| hdata.1.into()).unwrap_or_default(), + verification: crate::model::Verification::None, description: metadata.description, tags: microformat.microformat_data_renderer.tags, vanity_url, @@ -516,7 +408,7 @@ mod tests { use crate::{ client::{response, MapResponse}, - model::{Channel, ChannelInfo, ChannelPlaylist, ChannelVideo, Paginator}, + model::{Channel, ChannelInfo, Paginator, PlaylistItem, VideoItem}, param::Language, serializer::MapResult, }; @@ -537,7 +429,7 @@ mod tests { let channel: response::Channel = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult>> = + let map_res: MapResult>> = channel.map_response(id, Language::En, None).unwrap(); assert!( @@ -557,27 +449,6 @@ mod tests { } } - #[test] - fn map_channel_videos_cont() { - let json_path = Path::new("testfiles/channel/channel_videos_cont.json"); - let json_file = File::open(json_path).unwrap(); - - let channel: response::ChannelCont = - serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = channel - .map_response("UC2DjFE7Xf11URZqWBigcVOQ", Language::En, None) - .unwrap(); - - assert!( - map_res.warnings.is_empty(), - "deserialization/mapping warnings: {:?}", - map_res.warnings - ); - insta::assert_ron_snapshot!("map_channel_videos_cont", map_res.c, { - ".items[].publish_date" => "[date]", - }); - } - #[test] fn map_channel_playlists() { let json_path = Path::new("testfiles/channel/channel_playlists.json"); @@ -585,7 +456,7 @@ mod tests { let channel: response::Channel = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult>> = channel + let map_res: MapResult>> = channel .map_response("UC2DjFE7Xf11URZqWBigcVOQ", Language::En, None) .unwrap(); @@ -597,25 +468,6 @@ mod tests { insta::assert_ron_snapshot!("map_channel_playlists", map_res.c); } - #[test] - fn map_channel_playlists_cont() { - let json_path = Path::new("testfiles/channel/channel_playlists_cont.json"); - let json_file = File::open(json_path).unwrap(); - - let channel: response::ChannelCont = - serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = channel - .map_response("UC2DjFE7Xf11URZqWBigcVOQ", Language::En, None) - .unwrap(); - - assert!( - map_res.warnings.is_empty(), - "deserialization/mapping warnings: {:?}", - map_res.warnings - ); - insta::assert_ron_snapshot!("map_channel_playlists_cont", map_res.c); - } - #[test] fn map_channel_info() { let json_path = Path::new("testfiles/channel/channel_info.json"); diff --git a/src/client/mod.rs b/src/client/mod.rs index 1ada971..0ec221c 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -182,7 +182,6 @@ struct RustyPipeRef { storage: Option>, reporter: Option>, n_http_retries: u32, - n_query_retries: u32, consent_cookie: String, cache: CacheHolder, default_opts: RustyPipeOpts, @@ -200,7 +199,6 @@ pub struct RustyPipeBuilder { storage: Option>, reporter: Option>, n_http_retries: u32, - n_query_retries: u32, user_agent: String, default_opts: RustyPipeOpts, } @@ -291,8 +289,7 @@ impl RustyPipeBuilder { default_opts: RustyPipeOpts::default(), storage: Some(Box::new(FileStorage::default())), reporter: Some(Box::new(FileReporter::default())), - n_http_retries: 3, - n_query_retries: 2, + n_http_retries: 2, user_agent: DEFAULT_UA.to_owned(), } } @@ -328,7 +325,6 @@ impl RustyPipeBuilder { storage: self.storage, reporter: self.reporter, n_http_retries: self.n_http_retries, - n_query_retries: self.n_query_retries, consent_cookie: format!( "{}={}{}", CONSENT_COOKIE, @@ -382,18 +378,8 @@ impl RustyPipeBuilder { /// The waiting time is doubled for subsequent attempts (including a bit of /// random jitter to be less predictable). /// - /// **Default value**: 3 - pub fn n_http_retries(mut self, n_retries: u32) -> Self { - self.n_http_retries = n_retries; - self - } - - /// Set the number of retries for YouTube API queries. - /// - /// If a YouTube API requests returns invalid data, the request is repeated. - /// /// **Default value**: 2 - pub fn n_query_retries(mut self, n_retries: u32) -> Self { + pub fn n_http_retries(mut self, n_retries: u32) -> Self { self.n_http_retries = n_retries; self } @@ -481,7 +467,7 @@ impl RustyPipe { /// Execute the given http request. async fn http_request(&self, request: Request) -> Result { let mut last_res = None; - for n in 0..self.inner.n_http_retries { + for n in 0..=self.inner.n_http_retries { let res = self.inner.http.execute(request.try_clone().unwrap()).await; let emsg = match &res { Ok(response) => { @@ -974,62 +960,6 @@ impl RustyPipeQuery { endpoint: &str, body: &B, deobf: Option<&Deobfuscator>, - ) -> Result { - for n in 0..self.client.inner.n_query_retries.saturating_sub(1) { - let res = self - ._try_execute_request_deobf::( - ctype, - operation, - id, - endpoint, - body, - deobf, - n == 0, - ) - .await; - let emsg = match res { - Ok(res) => return Ok(res), - Err(error) => match &error { - Error::Extraction(e) => match e { - ExtractionError::Deserialization(_) - | ExtractionError::InvalidData(_) - | ExtractionError::WrongResult(_) - | ExtractionError::Retry => e.to_string(), - _ => return Err(error), - }, - _ => return Err(error), - }, - }; - - warn!("{} retry attempt #{}. Error: {}.", operation, n, emsg); - } - self._try_execute_request_deobf::( - ctype, - operation, - id, - endpoint, - body, - deobf, - self.client.inner.n_query_retries < 2, - ) - .await - } - - /// Single try of `execute_request_deobf` - #[allow(clippy::too_many_arguments)] - async fn _try_execute_request_deobf< - R: DeserializeOwned + MapResponse + Debug, - M, - B: Serialize + ?Sized, - >( - &self, - ctype: ClientType, - operation: &str, - id: &str, - endpoint: &str, - body: &B, - deobf: Option<&Deobfuscator>, - report: bool, ) -> Result { let request = self .request_builder(ctype, endpoint) @@ -1049,32 +979,30 @@ impl RustyPipeQuery { // println!("{}", &resp_str); let create_report = |level: Level, error: Option, msgs: Vec| { - if report { - if let Some(reporter) = &self.client.inner.reporter { - let report = Report { - info: Default::default(), - level, - operation: format!("{}({})", operation, id), - error, - msgs, - deobf_data: deobf.map(Deobfuscator::get_data), - http_request: crate::report::HTTPRequest { - url: request_url, - method: "POST".to_string(), - req_header: request_headers - .iter() - .map(|(k, v)| { - (k.to_string(), v.to_str().unwrap_or_default().to_owned()) - }) - .collect(), - req_body: serde_json::to_string(body).unwrap_or_default(), - status: status.into(), - resp_body: resp_str.to_owned(), - }, - }; + if let Some(reporter) = &self.client.inner.reporter { + let report = Report { + info: Default::default(), + level, + operation: format!("{}({})", operation, id), + error, + msgs, + deobf_data: deobf.map(Deobfuscator::get_data), + http_request: crate::report::HTTPRequest { + url: request_url, + method: "POST".to_string(), + req_header: request_headers + .iter() + .map(|(k, v)| { + (k.to_string(), v.to_str().unwrap_or_default().to_owned()) + }) + .collect(), + req_body: serde_json::to_string(body).unwrap_or_default(), + status: status.into(), + resp_body: resp_str.to_owned(), + }, + }; - reporter.report(&report); - } + reporter.report(&report); } }; @@ -1115,8 +1043,7 @@ impl RustyPipeQuery { match e { ExtractionError::VideoUnavailable(_, _) | ExtractionError::VideoAgeRestricted - | ExtractionError::ContentUnavailable(_) - | ExtractionError::Retry => (), + | ExtractionError::ContentUnavailable(_) => (), _ => create_report(Level::ERR, Some(e.to_string()), Vec::new()), } Err(e.into()) @@ -1181,8 +1108,3 @@ trait MapResponse { deobf: Option<&Deobfuscator>, ) -> Result, ExtractionError>; } - -#[cfg(test)] -mod tests { - // use super::*; -} diff --git a/src/client/pagination.rs b/src/client/pagination.rs index c1addc1..bcfa726 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -1,83 +1,92 @@ -use crate::error::Error; -use crate::model::{ - ChannelPlaylist, ChannelVideo, Comment, Paginator, PlaylistVideo, RecommendedVideo, SearchItem, - SearchVideo, -}; +use crate::error::{Error, ExtractionError}; +use crate::model::{Comment, Paginator, PlaylistVideo, YouTubeItem}; +use crate::param::ContinuationEndpoint; +use crate::serializer::MapResult; +use crate::util::TryRemove; -use super::RustyPipeQuery; +use super::{response, ClientType, MapResponse, QContinuation, RustyPipeQuery}; -macro_rules! paginator { - ($entity_type:ty, $cont_function:path) => { - impl Paginator<$entity_type> { - pub async fn next(&self, query: RustyPipeQuery) -> Result, Error> { - Ok(match &self.ctoken { - Some(ctoken) => Some($cont_function(query, ctoken).await?), - None => None, - }) - } +impl RustyPipeQuery { + pub async fn continuation>( + self, + ctoken: &str, + endpoint: ContinuationEndpoint, + visitor_data: Option<&str>, + ) -> Result, Error> { + let mut context = self.get_context(ClientType::Desktop, true).await; + context.client.visitor_data = visitor_data.map(str::to_owned); + let request_body = QContinuation { + context, + continuation: ctoken, + }; - pub async fn extend(&mut self, query: RustyPipeQuery) -> Result { - 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), - } - } + let p = self + .execute_request::, _>( + ClientType::Desktop, + "continuation", + ctoken, + endpoint.as_str(), + &request_body, + ) + .await?; - pub async fn extend_pages( - &mut self, - query: RustyPipeQuery, - n_pages: usize, - ) -> Result<(), Error> { - for _ in 0..n_pages { - match self.extend(query.clone()).await { - Ok(false) => break, - Err(e) => return Err(e), - _ => {} - } - } - Ok(()) - } - - pub async fn extend_limit( - &mut self, - query: RustyPipeQuery, - n_items: usize, - ) -> Result<(), Error> { - while self.items.len() < n_items { - match self.extend(query.clone()).await { - Ok(false) => break, - Err(e) => return Err(e), - _ => {} - } - } - Ok(()) - } - } - }; + Ok(Paginator { + count: p.count, + items: p + .items + .into_iter() + .filter_map(|item| T::try_from(item).ok()) + .collect(), + ctoken: p.ctoken, + visitor_data: p.visitor_data, + endpoint, + }) + } } -paginator!(PlaylistVideo, RustyPipeQuery::playlist_continuation); -paginator!(RecommendedVideo, RustyPipeQuery::video_recommendations); -paginator!(Comment, RustyPipeQuery::video_comments); -paginator!(ChannelVideo, RustyPipeQuery::channel_videos_continuation); -paginator!( - ChannelPlaylist, - RustyPipeQuery::channel_playlists_continuation -); -paginator!(SearchItem, RustyPipeQuery::search_continuation); +impl> MapResponse> for response::Continuation { + fn map_response( + self, + _id: &str, + lang: crate::param::Language, + _deobf: Option<&crate::deobfuscate::Deobfuscator>, + ) -> Result>, ExtractionError> { + let mut actions = self.on_response_received_actions; + let items = some_or_bail!( + actions.try_swap_remove(0), + Err(ExtractionError::InvalidData( + "no item section renderer".into() + )) + ) + .append_continuation_items_action + .continuation_items; -impl Paginator { + let mut mapper = response::YouTubeListMapper::::new(lang); + mapper.map_response(items); + + Ok(MapResult { + c: Paginator::new( + self.estimated_results, + mapper + .items + .into_iter() + .filter_map(|item| T::try_from(item).ok()) + .collect(), + mapper.ctoken, + ), + warnings: mapper.warnings, + }) + } +} + +impl> Paginator { pub async fn next(&self, query: RustyPipeQuery) -> Result, Error> { - Ok(match (&self.ctoken, &self.visitor_data) { - (Some(ctoken), Some(visitor_data)) => { - Some(query.startpage_continuation(ctoken, visitor_data).await?) - } + Ok(match &self.ctoken { + Some(ctoken) => Some( + query + .continuation(ctoken, self.endpoint, self.visitor_data.as_deref()) + .await?, + ), _ => None, }) } @@ -125,3 +134,135 @@ impl Paginator { Ok(()) } } + +impl Paginator { + pub async fn next(&self, query: RustyPipeQuery) -> Result, Error> { + Ok(match &self.ctoken { + Some(ctoken) => Some( + query + .video_comments(ctoken, self.visitor_data.as_deref()) + .await?, + ), + _ => None, + }) + } +} + +impl Paginator { + pub async fn next(&self, query: RustyPipeQuery) -> Result, Error> { + Ok(match &self.ctoken { + Some(ctoken) => Some(query.playlist_continuation(ctoken).await?), + None => None, + }) + } +} + +macro_rules! paginator { + ($entity_type:ty) => { + impl Paginator<$entity_type> { + pub async fn extend(&mut self, query: RustyPipeQuery) -> Result { + match self.next(query).await { + Ok(Some(paginator)) => { + let mut items = paginator.items; + self.items.append(&mut items); + self.ctoken = paginator.ctoken; + Ok(true) + } + Ok(None) => Ok(false), + Err(e) => Err(e), + } + } + + pub async fn extend_pages( + &mut self, + query: RustyPipeQuery, + n_pages: usize, + ) -> Result<(), Error> { + for _ in 0..n_pages { + match self.extend(query.clone()).await { + Ok(false) => break, + Err(e) => return Err(e), + _ => {} + } + } + Ok(()) + } + + pub async fn extend_limit( + &mut self, + query: RustyPipeQuery, + n_items: usize, + ) -> Result<(), Error> { + while self.items.len() < n_items { + match self.extend(query.clone()).await { + Ok(false) => break, + Err(e) => return Err(e), + _ => {} + } + } + Ok(()) + } + } + }; +} + +paginator!(Comment); +paginator!(PlaylistVideo); + +#[cfg(test)] +mod tests { + use std::{fs::File, io::BufReader, path::Path}; + + use rstest::rstest; + + use crate::{ + client::{response, MapResponse}, + model::{Paginator, PlaylistItem, YouTubeItem}, + param::Language, + serializer::MapResult, + }; + + #[rstest] + #[case("search", "search/cont")] + #[case("startpage", "trends/startpage_cont")] + #[case("recommendations", "video_details/recommendations")] + fn map_continuation_items(#[case] name: &str, #[case] path: &str) { + let filename = format!("testfiles/{}.json", path); + let json_path = Path::new(&filename); + let json_file = File::open(json_path).unwrap(); + + let items: response::Continuation = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + let map_res: MapResult> = + items.map_response("", Language::En, None).unwrap(); + + assert!( + map_res.warnings.is_empty(), + "deserialization/mapping warnings: {:?}", + map_res.warnings + ); + insta::assert_ron_snapshot!(format!("map_{}", name), map_res.c, { + ".items.*.publish_date" => "[date]", + }); + } + + #[rstest] + #[case("channel_playlists", "channel/channel_playlists_cont")] + fn map_continuation_playlists(#[case] name: &str, #[case] path: &str) { + let filename = format!("testfiles/{}.json", path); + let json_path = Path::new(&filename); + let json_file = File::open(json_path).unwrap(); + + let items: response::Continuation = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + let map_res: MapResult> = + items.map_response("", Language::En, None).unwrap(); + + assert!( + map_res.warnings.is_empty(), + "deserialization/mapping warnings: {:?}", + map_res.warnings + ); + insta::assert_ron_snapshot!(format!("map_{}", name), map_res.c); + } +} diff --git a/src/client/playlist.rs b/src/client/playlist.rs index 1084575..be331fc 100644 --- a/src/client/playlist.rs +++ b/src/client/playlist.rs @@ -185,7 +185,9 @@ impl MapResponse> for response::PlaylistCont { _deobf: Option<&Deobfuscator>, ) -> Result>, ExtractionError> { let mut actions = self.on_response_received_actions; - let action = actions.try_swap_remove(0).ok_or(ExtractionError::Retry)?; + let action = actions + .try_swap_remove(0) + .ok_or_else(|| ExtractionError::InvalidData("no onResponseReceivedAction".into()))?; let (items, ctoken) = map_playlist_items(action.append_continuation_items_action.continuation_items.c); @@ -200,30 +202,23 @@ impl MapResponse> for response::PlaylistCont { } } -fn map_playlist_items(items: Vec) -> (Vec, Option) { +fn map_playlist_items( + items: Vec, +) -> (Vec, Option) { let mut ctoken: Option = None; let videos = items .into_iter() .filter_map(|it| match it { - response::VideoListItem::PlaylistVideoRenderer(video) => { - match ChannelId::try_from(video.channel) { - Ok(channel) => Some(PlaylistVideo { - id: video.video_id, - title: video.title, - length: video.length_seconds, - thumbnail: video.thumbnail.into(), - channel, - }), - Err(_) => None, - } + response::playlist::PlaylistItem::PlaylistVideoRenderer(video) => { + PlaylistVideo::try_from(video).ok() } - response::VideoListItem::ContinuationItemRenderer { + response::playlist::PlaylistItem::ContinuationItemRenderer { continuation_endpoint, } => { ctoken = Some(continuation_endpoint.continuation_command.token); None } - _ => None, + response::playlist::PlaylistItem::None => None, }) .collect::>(); (videos, ctoken) @@ -259,4 +254,21 @@ mod tests { ".last_update" => "[date]" }); } + + #[test] + fn map_playlist_cont() { + let json_path = Path::new("testfiles/playlist/playlist_cont.json"); + let json_file = File::open(json_path).unwrap(); + + let playlist: response::PlaylistCont = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + let map_res = playlist.map_response("", Language::En, None).unwrap(); + + assert!( + map_res.warnings.is_empty(), + "deserialization/mapping warnings: {:?}", + map_res.warnings + ); + insta::assert_ron_snapshot!("map_playlist_cont", map_res.c); + } } diff --git a/src/client/response/channel.rs b/src/client/response/channel.rs index 0e730ec..b90a79d 100644 --- a/src/client/response/channel.rs +++ b/src/client/response/channel.rs @@ -3,16 +3,16 @@ use serde_with::serde_as; use serde_with::{DefaultOnError, VecSkipError}; use super::url_endpoint::NavigationEndpoint; -use super::Thumbnails; use super::{Alert, ChannelBadge}; -use super::{ContentRenderer, ContentsRenderer, VideoListItem}; +use super::{ContentRenderer, ContentsRenderer}; +use super::{Thumbnails, YouTubeListItem}; use crate::serializer::ignore_any; use crate::serializer::{text::Text, MapResult, VecLogError}; #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Channel { +pub(crate) struct Channel { #[serde(default)] #[serde_as(as = "DefaultOnError")] pub header: Option
, @@ -23,18 +23,9 @@ pub struct Channel { pub alerts: Option>, } -#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ChannelCont { - #[serde(default)] - #[serde_as(as = "VecSkipError<_>")] - pub on_response_received_actions: Vec, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct Contents { +pub(crate) struct Contents { pub two_column_browse_results_renderer: TabsRenderer, } @@ -43,21 +34,21 @@ pub struct Contents { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct TabsRenderer { +pub(crate) struct TabsRenderer { #[serde_as(as = "VecSkipError<_>")] pub tabs: Vec, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct TabRendererWrap { +pub(crate) struct TabRendererWrap { pub tab_renderer: ContentRenderer, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct TabContent { +pub(crate) struct TabContent { #[serde(default)] #[serde_as(as = "DefaultOnError")] pub section_list_renderer: Option, @@ -69,7 +60,7 @@ pub struct TabContent { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct SectionListRenderer { +pub(crate) struct SectionListRenderer { pub contents: Vec, /// - **Videos**: browse-feedUC2DjFE7Xf11URZqWBigcVOQvideos (...) /// - **Playlists**: browse-feedUC2DjFE7Xf11URZqWBigcVOQplaylists104 (...) @@ -81,9 +72,9 @@ pub struct SectionListRenderer { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct RichGridRenderer { +pub(crate) struct RichGridRenderer { #[serde_as(as = "VecLogError<_>")] - pub contents: MapResult>, + pub contents: MapResult>, /// - **Videos**: browse-feedUC2DjFE7Xf11URZqWBigcVOQvideos (...) /// - **Playlists**: browse-feedUC2DjFE7Xf11URZqWBigcVOQplaylists104 (...) /// - **Info**: None @@ -92,17 +83,17 @@ pub struct RichGridRenderer { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ItemSectionRendererWrap { +pub(crate) struct ItemSectionRendererWrap { pub item_section_renderer: ContentsRenderer, } #[serde_as] #[derive(Default, Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub enum ChannelContent { +pub(crate) enum ChannelContent { GridRenderer { #[serde_as(as = "VecLogError<_>")] - items: MapResult>, + items: MapResult>, }, ChannelAboutFullMetadataRenderer(ChannelFullMetadata), #[default] @@ -112,7 +103,7 @@ pub enum ChannelContent { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub enum Header { +pub(crate) enum Header { C4TabbedHeaderRenderer(HeaderRenderer), /// Used for special channels like YouTube Music CarouselHeaderRenderer(ContentsRenderer), @@ -121,7 +112,7 @@ pub enum Header { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct HeaderRenderer { +pub(crate) struct HeaderRenderer { /// Approximate subscriber count (e.g. `880K subscribers`), depends on language. /// /// `None` if the subscriber count is hidden. @@ -129,8 +120,9 @@ pub struct HeaderRenderer { pub subscriber_count_text: Option, #[serde(default)] pub avatar: Thumbnails, - #[serde_as(as = "Option>")] - pub badges: Option>, + #[serde(default)] + #[serde_as(as = "VecSkipError<_>")] + pub badges: Vec, #[serde(default)] pub banner: Thumbnails, #[serde(default)] @@ -143,7 +135,7 @@ pub struct HeaderRenderer { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub enum CarouselHeaderRendererItem { +pub(crate) enum CarouselHeaderRendererItem { #[serde(rename_all = "camelCase")] TopicChannelDetailsRenderer { #[serde_as(as = "Option")] @@ -157,13 +149,13 @@ pub enum CarouselHeaderRendererItem { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Metadata { +pub(crate) struct Metadata { pub channel_metadata_renderer: ChannelMetadataRenderer, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ChannelMetadataRenderer { +pub(crate) struct ChannelMetadataRenderer { pub title: String, /// Channel ID pub external_id: String, @@ -173,13 +165,13 @@ pub struct ChannelMetadataRenderer { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Microformat { +pub(crate) struct Microformat { pub microformat_data_renderer: MicroformatDataRenderer, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MicroformatDataRenderer { +pub(crate) struct MicroformatDataRenderer { #[serde(default)] pub tags: Vec, } @@ -187,7 +179,7 @@ pub struct MicroformatDataRenderer { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ChannelFullMetadata { +pub(crate) struct ChannelFullMetadata { #[serde_as(as = "Text")] pub joined_date_text: String, #[serde_as(as = "Option")] @@ -200,22 +192,8 @@ pub struct ChannelFullMetadata { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct PrimaryLink { +pub(crate) struct PrimaryLink { #[serde_as(as = "Text")] pub title: String, pub navigation_endpoint: NavigationEndpoint, } - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct OnResponseReceivedAction { - pub append_continuation_items_action: AppendAction, -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct AppendAction { - #[serde_as(as = "VecLogError<_>")] - pub continuation_items: MapResult>, -} diff --git a/src/client/response/channel_rss.rs b/src/client/response/channel_rss.rs index 205f103..456aec4 100644 --- a/src/client/response/channel_rss.rs +++ b/src/client/response/channel_rss.rs @@ -4,7 +4,7 @@ use serde::Deserialize; use super::Thumbnail; #[derive(Debug, Deserialize)] -pub struct ChannelRss { +pub(crate) struct ChannelRss { #[serde(rename = "$unflatten=yt:channelId")] pub channel_id: String, #[serde(rename = "$unflatten=title")] @@ -15,7 +15,7 @@ pub struct ChannelRss { } #[derive(Debug, Deserialize)] -pub struct Entry { +pub(crate) struct Entry { #[serde(rename = "$unflatten=yt:videoId")] pub video_id: String, #[serde(rename = "$unflatten=title")] @@ -29,7 +29,7 @@ pub struct Entry { } #[derive(Debug, Deserialize)] -pub struct MediaGroup { +pub(crate) struct MediaGroup { #[serde(rename = "$unflatten=media:thumbnail")] pub thumbnail: Thumbnail, #[serde(rename = "$unflatten=media:description")] @@ -39,7 +39,7 @@ pub struct MediaGroup { } #[derive(Debug, Deserialize)] -pub struct Community { +pub(crate) struct Community { #[serde(rename = "$unflatten=media:starRating")] pub rating: Rating, #[serde(rename = "$unflatten=media:statistics")] @@ -47,12 +47,12 @@ pub struct Community { } #[derive(Debug, Deserialize)] -pub struct Rating { +pub(crate) struct Rating { pub count: u64, } #[derive(Debug, Deserialize)] -pub struct Statistics { +pub(crate) struct Statistics { pub views: u64, } diff --git a/src/client/response/mod.rs b/src/client/response/mod.rs index 02bfa31..644b998 100644 --- a/src/client/response/mod.rs +++ b/src/client/response/mod.rs @@ -1,66 +1,55 @@ -pub mod channel; -pub mod player; -pub mod playlist; -pub mod playlist_music; -pub mod search; -pub mod trends; -pub mod url_endpoint; -pub mod video_details; +pub(crate) mod channel; +pub(crate) mod player; +pub(crate) mod playlist; +// pub(crate) mod playlist_music; +pub(crate) mod search; +pub(crate) mod trends; +pub(crate) mod url_endpoint; +pub(crate) mod video_details; +pub(crate) mod video_item; -pub use channel::Channel; -pub use channel::ChannelCont; -pub use player::Player; -pub use playlist::Playlist; -pub use playlist::PlaylistCont; -pub use playlist_music::PlaylistMusic; -pub use search::Search; -pub use search::SearchCont; -pub use trends::Startpage; -pub use trends::StartpageCont; -pub use trends::Trending; -pub use url_endpoint::ResolvedUrl; -pub use video_details::VideoComments; -pub use video_details::VideoDetails; -pub use video_details::VideoRecommendations; +pub(crate) use channel::Channel; +pub(crate) use player::Player; +pub(crate) use playlist::Playlist; +pub(crate) use playlist::PlaylistCont; +// pub(crate) use playlist_music::PlaylistMusic; +pub(crate) use search::Search; +pub(crate) use trends::Startpage; +pub(crate) use trends::Trending; +pub(crate) use url_endpoint::ResolvedUrl; +pub(crate) use video_details::VideoComments; +pub(crate) use video_details::VideoDetails; +pub(crate) use video_item::YouTubeListItem; +pub(crate) use video_item::YouTubeListMapper; #[cfg(feature = "rss")] -pub mod channel_rss; +pub(crate) mod channel_rss; #[cfg(feature = "rss")] -pub use channel_rss::ChannelRss; +pub(crate) use channel_rss::ChannelRss; -use chrono::TimeZone; use serde::Deserialize; -use serde_with::{json::JsonString, serde_as, DefaultOnError, VecSkipError}; +use serde_with::{json::JsonString, serde_as, VecSkipError}; use crate::error::ExtractionError; -use crate::model; -use crate::param::Language; use crate::serializer::MapResult; -use crate::serializer::{ - ignore_any, - text::{Text, TextComponent}, - VecLogError, -}; -use crate::timeago; -use crate::util::MappingError; -use crate::util::{self, TryRemove}; +use crate::serializer::{text::Text, VecLogError}; #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ContentRenderer { +pub(crate) struct ContentRenderer { pub content: T, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ContentsRenderer { +pub(crate) struct ContentsRenderer { #[serde(alias = "tabs")] pub contents: Vec, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ThumbnailsWrap { +pub(crate) struct ThumbnailsWrap { #[serde(default)] pub thumbnail: Thumbnails, } @@ -69,276 +58,47 @@ pub struct ThumbnailsWrap { /// Not only used for thumbnails, but also for avatars and banners. #[derive(Default, Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Thumbnails { +pub(crate) struct Thumbnails { #[serde(default)] pub thumbnails: Vec, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Thumbnail { +pub(crate) struct Thumbnail { pub url: String, pub width: u32, pub height: u32, } -#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub enum VideoListItem { - /// Video on channel page - GridVideoRenderer(GridVideoRenderer), - /// Video in recommendations - CompactVideoRenderer(CompactVideoRenderer), - /// Video in playlist - PlaylistVideoRenderer(PlaylistVideoRenderer), - - /// Playlist on channel page - GridPlaylistRenderer(GridPlaylistRenderer), - - /// Video on startpage - /// - /// Seems to be currently A/B tested on the channel page, - /// as of 11.10.2022 - RichItemRenderer { content: RichItem }, - - /// Seems to be currently A/B tested on the video details page, - /// as of 11.10.2022 - ItemSectionRenderer { - #[serde_as(as = "VecLogError<_>")] - contents: MapResult>, - }, - - /// Continauation items are located at the end of a list - /// and contain the continuation token for progressive loading - #[serde(rename_all = "camelCase")] - ContinuationItemRenderer { - continuation_endpoint: ContinuationEndpoint, - }, - /// No video list item (e.g. ad) or unimplemented item - /// - /// Unimplemented: - /// - compactPlaylistRenderer (recommended playlists) - /// - compactRadioRenderer (recommended mix) - #[serde(other, deserialize_with = "ignore_any")] - None, -} - -/// Video displayed on a channel page -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct GridVideoRenderer { - pub video_id: String, - pub thumbnail: Thumbnails, - #[serde_as(as = "Text")] - pub title: String, - #[serde_as(as = "Option")] - pub published_time_text: Option, - /// Contains `No views` if the view count is zero - #[serde_as(as = "Option")] - pub view_count_text: Option, - /// Contains video length and Short/Live tag - #[serde_as(as = "VecSkipError<_>")] - pub thumbnail_overlays: Vec, - /// Release date for upcoming videos - pub upcoming_event_data: Option, -} - -/// Video displayed in recommendations -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct CompactVideoRenderer { - pub video_id: String, - pub thumbnail: Thumbnails, - #[serde_as(as = "Text")] - pub title: String, - #[serde(rename = "shortBylineText")] - pub channel: TextComponent, - pub channel_thumbnail: Thumbnails, - /// Channel verification badge - #[serde(default)] - #[serde_as(as = "VecSkipError<_>")] - pub owner_badges: Vec, - #[serde_as(as = "Option")] - pub length_text: Option, - /// (e.g. `11 months ago`) - #[serde_as(as = "Option")] - pub published_time_text: Option, - /// Contains `No views` if the view count is zero - #[serde_as(as = "Option")] - pub view_count_text: Option, - /// Badges are displayed on the video thumbnail and - /// show certain video properties (e.g. active livestream) - #[serde(default)] - #[serde_as(as = "VecSkipError<_>")] - pub badges: Vec, - /// Contains Short/Live tag - #[serde_as(as = "VecSkipError<_>")] - pub thumbnail_overlays: Vec, -} - -/// Video displayed in search results -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct VideoRenderer { - pub video_id: String, - pub thumbnail: Thumbnails, - #[serde_as(as = "Text")] - pub title: String, - #[serde(rename = "shortBylineText")] - pub channel: Option, - pub channel_thumbnail_supported_renderers: Option, - #[serde_as(as = "Option")] - pub published_time_text: Option, - #[serde_as(as = "Option")] - pub length_text: Option, - /// Contains `No views` if the view count is zero - #[serde_as(as = "Option")] - pub view_count_text: Option, - /// Channel verification badge - #[serde(default)] - #[serde_as(as = "VecSkipError<_>")] - pub owner_badges: Vec, - /// Contains Short/Live tag - #[serde_as(as = "VecSkipError<_>")] - pub thumbnail_overlays: Vec, - /// Abbreviated video description (on startpage) - #[serde_as(as = "Option")] - pub description_snippet: Option, - /// Contains abbreviated video description (on search page) - #[serde_as(as = "Option>")] - pub detailed_metadata_snippets: Option>, - /// Release date for upcoming videos - pub upcoming_event_data: Option, -} - -/// Playlist displayed in search results -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct PlaylistRenderer { - pub playlist_id: String, - #[serde_as(as = "Text")] - pub title: String, - /// The first item of this list contains the playlist thumbnail, - /// subsequent items contain very small thumbnails of the next playlist videos - pub thumbnails: Vec, - #[serde_as(as = "JsonString")] - pub video_count: u64, - #[serde(rename = "shortBylineText")] - pub channel: TextComponent, - /// Channel verification badge - #[serde(default)] - #[serde_as(as = "VecSkipError<_>")] - pub owner_badges: Vec, - /// First 2 videos - #[serde(default)] - #[serde_as(as = "VecSkipError<_>")] - pub videos: Vec, -} - -/// Video displayed in a playlist -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct PlaylistVideoRenderer { - pub video_id: String, - pub thumbnail: Thumbnails, - #[serde_as(as = "Text")] - pub title: String, - #[serde(rename = "shortBylineText")] - pub channel: TextComponent, - #[serde_as(as = "JsonString")] - pub length_seconds: u32, -} - -/// Channel displayed in search results -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ChannelRenderer { - pub channel_id: String, - #[serde_as(as = "Text")] - pub title: String, - pub thumbnail: Thumbnails, - /// Abbreviated channel description - /// - /// Not present if the channel has no description - #[serde(default)] - #[serde_as(as = "Text")] - pub description_snippet: String, - /// Not present if the channel has no videos - #[serde_as(as = "Option")] - pub video_count_text: Option, - #[serde_as(as = "Option")] - pub subscriber_count_text: Option, - /// Channel verification badge - #[serde(default)] - #[serde_as(as = "VecSkipError<_>")] - pub owner_badges: Vec, -} - -/// Playlist displayed on a channel page -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct GridPlaylistRenderer { - pub playlist_id: String, - #[serde_as(as = "Text")] - pub title: String, - pub thumbnail: Thumbnails, - #[serde_as(as = "Text")] - pub video_count_short_text: String, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -#[allow(clippy::large_enum_variant)] -pub enum RichItem { - VideoRenderer(VideoRenderer), - PlaylistRenderer(GridPlaylistRenderer), -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct UpcomingEventData { - /// Unixtime in seconds - #[serde_as(as = "JsonString")] - pub start_time: i64, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ContinuationItemRenderer { +pub(crate) struct ContinuationItemRenderer { pub continuation_endpoint: ContinuationEndpoint, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ContinuationEndpoint { +pub(crate) struct ContinuationEndpoint { pub continuation_command: ContinuationCommand, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ContinuationCommand { +pub(crate) struct ContinuationCommand { pub token: String, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Icon { +pub(crate) struct Icon { pub icon_type: IconType, } #[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, Hash)] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] -pub enum IconType { +pub(crate) enum IconType { /// Checkmark for verified channels Check, /// Music note for verified artists @@ -349,151 +109,81 @@ pub enum IconType { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct VideoOwner { - pub video_owner_renderer: VideoOwnerRenderer, -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct VideoOwnerRenderer { - pub title: TextComponent, - pub thumbnail: Thumbnails, - #[serde_as(as = "Option")] - pub subscriber_count_text: Option, - #[serde(default)] - #[serde_as(as = "VecSkipError<_>")] - pub badges: Vec, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ChannelBadge { +pub(crate) struct ChannelBadge { pub metadata_badge_renderer: ChannelBadgeRenderer, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ChannelBadgeRenderer { +pub(crate) struct ChannelBadgeRenderer { pub style: ChannelBadgeStyle, } #[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, Hash)] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] -pub enum ChannelBadgeStyle { +pub(crate) enum ChannelBadgeStyle { BadgeStyleTypeVerified, BadgeStyleTypeVerifiedArtist, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct TimeOverlay { - pub thumbnail_overlay_time_status_renderer: TimeOverlayRenderer, -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct TimeOverlayRenderer { - /// `29:54` - /// - /// Is `LIVE` in case of a livestream and `SHORTS` in case of a short video - #[serde_as(as = "Text")] - pub text: String, - #[serde(default)] - #[serde_as(deserialize_as = "DefaultOnError")] - pub style: TimeOverlayStyle, -} - -#[derive(Default, Clone, Copy, Debug, Deserialize, PartialEq, Eq)] -#[serde(rename_all = "SCREAMING_SNAKE_CASE")] -pub enum TimeOverlayStyle { - #[default] - Default, - Live, - Shorts, -} - -/// Badges are displayed on the video thumbnail and -/// show certain video properties (e.g. active livestream) -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct VideoBadge { - pub metadata_badge_renderer: VideoBadgeRenderer, -} - -/// Badges are displayed on the video thumbnail and -/// show certain video properties (e.g. active livestream) -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct VideoBadgeRenderer { - pub style: VideoBadgeStyle, -} - -#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, Hash)] -#[serde(rename_all = "SCREAMING_SNAKE_CASE")] -pub enum VideoBadgeStyle { - /// Active livestream - BadgeStyleTypeLiveNow, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct Alert { +pub(crate) struct Alert { pub alert_renderer: AlertRenderer, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct AlertRenderer { +pub(crate) struct AlertRenderer { #[serde_as(as = "Text")] pub text: String, } +// CONTINUATION + +#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ChannelThumbnailSupportedRenderers { - pub channel_thumbnail_with_link_renderer: ChannelThumbnailWithLinkRenderer, +pub(crate) struct Continuation { + /// Number of search results + #[serde_as(as = "Option")] + pub estimated_results: Option, + #[serde( + alias = "onResponseReceivedCommands", + alias = "onResponseReceivedEndpoints" + )] + #[serde_as(as = "VecSkipError<_>")] + pub on_response_received_actions: Vec, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ChannelThumbnailWithLinkRenderer { - pub thumbnail: Thumbnails, +pub(crate) struct ContinuationActionWrap { + pub append_continuation_items_action: ContinuationAction, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct DetailedMetadataSnippet { - #[serde_as(as = "Text")] - pub snippet_text: String, +pub(crate) struct ContinuationAction { + #[serde_as(as = "VecLogError<_>")] + pub continuation_items: MapResult>, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ChildVideoRendererWrap { - pub child_video_renderer: ChildVideoRenderer, -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ChildVideoRenderer { - pub video_id: String, - #[serde_as(as = "Text")] - pub title: String, - #[serde_as(as = "Option")] - pub length_text: Option, +pub(crate) struct ResponseContext { + pub visitor_data: Option, } // YouTube Music +/* #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MusicItem { +pub(crate) struct MusicItem { pub thumbnail: MusicThumbnailRenderer, #[serde(default)] #[serde_as(deserialize_as = "DefaultOnError")] @@ -506,28 +196,28 @@ pub struct MusicItem { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MusicThumbnailRenderer { +pub(crate) struct MusicThumbnailRenderer { #[serde(alias = "croppedSquareThumbnailRenderer")] pub music_thumbnail_renderer: ThumbnailsWrap, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct PlaylistItemData { +pub(crate) struct PlaylistItemData { pub video_id: String, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MusicContentsRenderer { +pub(crate) struct MusicContentsRenderer { pub contents: Vec, #[serde_as(as = "Option>")] pub continuations: Option>, } #[derive(Debug, Deserialize)] -pub struct MusicColumn { +pub(crate) struct MusicColumn { #[serde( rename = "musicResponsiveListItemFlexColumnRenderer", alias = "musicResponsiveListItemFixedColumnRenderer" @@ -537,19 +227,20 @@ pub struct MusicColumn { #[serde_as] #[derive(Debug, Deserialize)] -pub struct MusicColumnRenderer { +pub(crate) struct MusicColumnRenderer { pub text: TextComponent, } +*/ #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MusicContinuation { +pub(crate) struct MusicContinuation { pub next_continuation_data: MusicContinuationData, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MusicContinuationData { +pub(crate) struct MusicContinuationData { pub continuation: String, } @@ -601,39 +292,7 @@ impl From for crate::model::Verification { } } -pub trait IsLive { - fn is_live(&self) -> bool; -} - -pub trait IsShort { - fn is_short(&self) -> bool; -} - -impl IsLive for Vec { - fn is_live(&self) -> bool { - self.iter().any(|badge| { - badge.metadata_badge_renderer.style == VideoBadgeStyle::BadgeStyleTypeLiveNow - }) - } -} - -impl IsLive for Vec { - fn is_live(&self) -> bool { - self.iter().any(|overlay| { - overlay.thumbnail_overlay_time_status_renderer.style == TimeOverlayStyle::Live - }) - } -} - -impl IsShort for Vec { - fn is_short(&self) -> bool { - self.iter().any(|overlay| { - overlay.thumbnail_overlay_time_status_renderer.style == TimeOverlayStyle::Shorts - }) - } -} - -pub fn alerts_to_err(alerts: Option>) -> ExtractionError { +pub(crate) fn alerts_to_err(alerts: Option>) -> ExtractionError { match alerts { Some(alerts) => ExtractionError::ContentUnavailable( alerts @@ -646,234 +305,3 @@ pub fn alerts_to_err(alerts: Option>) -> ExtractionError { None => ExtractionError::ContentUnavailable("content not found".into()), } } - -pub trait FromWLang { - fn from_w_lang(from: T, lang: Language) -> Self; -} - -pub trait TryFromWLang: Sized { - fn from_w_lang(from: T, lang: Language) -> Result; -} - -impl FromWLang for model::ChannelVideo { - fn from_w_lang(video: GridVideoRenderer, lang: Language) -> Self { - let mut toverlays = video.thumbnail_overlays; - let is_live = toverlays.is_live(); - let is_short = toverlays.is_short(); - let to = toverlays.try_swap_remove(0); - - Self { - id: video.video_id, - title: video.title, - // Time text is `LIVE` for livestreams, so we ignore parse errors - length: to.and_then(|to| { - util::parse_video_length(&to.thumbnail_overlay_time_status_renderer.text) - }), - thumbnail: video.thumbnail.into(), - publish_date: video - .upcoming_event_data - .as_ref() - .map(|upc| { - chrono::Local.from_utc_datetime(&chrono::NaiveDateTime::from_timestamp( - upc.start_time, - 0, - )) - }) - .or_else(|| { - video - .published_time_text - .as_ref() - .and_then(|txt| timeago::parse_timeago_to_dt(lang, txt)) - }), - publish_date_txt: video.published_time_text, - view_count: video - .view_count_text - .and_then(|txt| util::parse_numeric(&txt).ok()) - .unwrap_or_default(), - is_live, - is_short, - is_upcoming: video.upcoming_event_data.is_some(), - } - } -} - -impl FromWLang for model::ChannelVideo { - fn from_w_lang(video: VideoRenderer, lang: Language) -> Self { - let mut toverlays = video.thumbnail_overlays; - let is_live = toverlays.is_live(); - let is_short = toverlays.is_short(); - let to = toverlays.try_swap_remove(0); - - Self { - id: video.video_id, - title: video.title, - // Time text is `LIVE` for livestreams, so we ignore parse errors - length: to.and_then(|to| { - util::parse_video_length(&to.thumbnail_overlay_time_status_renderer.text) - }), - thumbnail: video.thumbnail.into(), - publish_date: video - .upcoming_event_data - .as_ref() - .map(|upc| { - chrono::Local.from_utc_datetime(&chrono::NaiveDateTime::from_timestamp( - upc.start_time, - 0, - )) - }) - .or_else(|| { - video - .published_time_text - .as_ref() - .and_then(|txt| timeago::parse_timeago_to_dt(lang, txt)) - }), - publish_date_txt: video.published_time_text, - view_count: video - .view_count_text - .and_then(|txt| util::parse_numeric(&txt).ok()) - .unwrap_or_default(), - is_live, - is_short, - is_upcoming: video.upcoming_event_data.is_some(), - } - } -} - -impl From for model::ChannelPlaylist { - fn from(playlist: GridPlaylistRenderer) -> Self { - Self { - id: playlist.playlist_id, - name: playlist.title, - thumbnail: playlist.thumbnail.into(), - video_count: util::parse_numeric(&playlist.video_count_short_text).ok(), - } - } -} - -impl TryFromWLang for model::RecommendedVideo { - fn from_w_lang( - video: CompactVideoRenderer, - lang: Language, - ) -> Result { - let channel = model::ChannelId::try_from(video.channel)?; - - Ok(Self { - id: video.video_id, - title: video.title, - length: video - .length_text - .and_then(|txt| util::parse_video_length(&txt)), - thumbnail: video.thumbnail.into(), - channel: model::ChannelTag { - id: channel.id, - name: channel.name, - avatar: video.channel_thumbnail.into(), - verification: video.owner_badges.into(), - subscriber_count: None, - }, - publish_date: video - .published_time_text - .as_ref() - .and_then(|txt| timeago::parse_timeago_to_dt(lang, txt)), - publish_date_txt: video.published_time_text, - view_count: video - .view_count_text - .and_then(|txt| util::parse_numeric(&txt).ok()) - .unwrap_or_default(), - is_live: video.badges.is_live(), - is_short: video.thumbnail_overlays.is_short(), - }) - } -} - -impl TryFromWLang for model::SearchVideo { - fn from_w_lang(video: VideoRenderer, lang: Language) -> Result { - let channel = model::ChannelId::try_from( - video - .channel - .ok_or_else(|| MappingError("no video channel".into()))?, - )?; - let channel_thumbnail = video - .channel_thumbnail_supported_renderers - .ok_or_else(|| MappingError("no video channel thumbnail".into()))?; - - Ok(Self { - id: video.video_id, - title: video.title, - length: video - .length_text - .and_then(|txt| util::parse_video_length(&txt)), - thumbnail: video.thumbnail.into(), - channel: model::ChannelTag { - id: channel.id, - name: channel.name, - avatar: channel_thumbnail - .channel_thumbnail_with_link_renderer - .thumbnail - .into(), - verification: video.owner_badges.into(), - subscriber_count: None, - }, - publish_date: video - .published_time_text - .as_ref() - .and_then(|txt| timeago::parse_timeago_to_dt(lang, txt)), - publish_date_txt: video.published_time_text, - view_count: video - .view_count_text - .and_then(|txt| util::parse_numeric(&txt).ok()) - .unwrap_or_default(), - is_live: video.thumbnail_overlays.is_live(), - is_short: video.thumbnail_overlays.is_short(), - short_description: video - .detailed_metadata_snippets - .and_then(|mut snippets| snippets.try_swap_remove(0).map(|s| s.snippet_text)) - .or(video.description_snippet) - .unwrap_or_default(), - }) - } -} - -impl From for model::SearchPlaylist { - fn from(playlist: PlaylistRenderer) -> Self { - let mut thumbnails = playlist.thumbnails; - - Self { - id: playlist.playlist_id, - name: playlist.title, - thumbnail: thumbnails.try_swap_remove(0).unwrap_or_default().into(), - video_count: playlist.video_count, - first_videos: playlist - .videos - .into_iter() - .map(|v| model::SearchPlaylistVideo { - id: v.child_video_renderer.video_id, - title: v.child_video_renderer.title, - length: v - .child_video_renderer - .length_text - .and_then(|txt| util::parse_video_length(&txt)), - }) - .collect(), - } - } -} - -impl From for model::SearchChannel { - fn from(channel: ChannelRenderer) -> Self { - Self { - id: channel.channel_id, - name: channel.title, - avatar: channel.thumbnail.into(), - verification: channel.owner_badges.into(), - subscriber_count: channel - .subscriber_count_text - .and_then(|txt| util::parse_numeric(&txt).ok()), - video_count: channel - .video_count_text - .and_then(|txt| util::parse_numeric(&txt).ok()) - .unwrap_or_default(), - short_description: channel.description_snippet, - } - } -} diff --git a/src/client/response/player.rs b/src/client/response/player.rs index b363e3a..a1162ad 100644 --- a/src/client/response/player.rs +++ b/src/client/response/player.rs @@ -9,7 +9,7 @@ use crate::serializer::{text::Text, MapResult, VecLogError}; #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Player { +pub(crate) struct Player { pub playability_status: PlayabilityStatus, pub streaming_data: Option, pub captions: Option, @@ -18,7 +18,7 @@ pub struct Player { #[derive(Debug, Deserialize)] #[serde(tag = "status", rename_all = "SCREAMING_SNAKE_CASE")] -pub enum PlayabilityStatus { +pub(crate) enum PlayabilityStatus { #[serde(rename_all = "camelCase")] Ok { live_streamability: Option }, /// Video cant be played because of DRM / Geoblock @@ -35,12 +35,12 @@ pub enum PlayabilityStatus { } #[derive(Debug, Deserialize)] -pub struct Empty {} +pub(crate) struct Empty {} #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct StreamingData { +pub(crate) struct StreamingData { #[serde_as(as = "JsonString")] pub expires_in_seconds: u32, #[serde(default)] @@ -58,7 +58,7 @@ pub struct StreamingData { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Format { +pub(crate) struct Format { pub itag: u32, pub url: Option, @@ -94,8 +94,6 @@ pub struct Format { pub audio_quality: Option, #[serde_as(as = "Option")] pub audio_sample_rate: Option, - pub audio_channels: Option, - pub loudness_db: Option, pub audio_track: Option, pub signature_cipher: Option, @@ -119,7 +117,7 @@ impl Format { #[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] #[serde(rename_all = "lowercase")] -pub enum Quality { +pub(crate) enum Quality { Tiny, Small, Medium, @@ -132,7 +130,7 @@ pub enum Quality { } #[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub enum AudioQuality { +pub(crate) enum AudioQuality { #[serde(rename = "AUDIO_QUALITY_LOW", alias = "low")] Low, #[serde(rename = "AUDIO_QUALITY_MEDIUM", alias = "medium")] @@ -143,7 +141,7 @@ pub enum AudioQuality { #[derive(Default, Clone, Copy, Debug, Deserialize, PartialEq, Eq, Hash)] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] -pub enum FormatType { +pub(crate) enum FormatType { #[default] Default, /// This stream only works via DASH and not via progressive HTTP. @@ -152,13 +150,13 @@ pub enum FormatType { #[derive(Default, Debug, Deserialize)] #[serde(default, rename_all = "camelCase")] -pub struct ColorInfo { +pub(crate) struct ColorInfo { pub primaries: Primaries, } #[derive(Default, Clone, Copy, Debug, Deserialize, PartialEq, Eq, Hash)] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] -pub enum Primaries { +pub(crate) enum Primaries { #[default] ColorPrimariesBt709, ColorPrimariesBt2020, @@ -166,7 +164,7 @@ pub enum Primaries { #[derive(Default, Debug, Deserialize)] #[serde(default, rename_all = "camelCase")] -pub struct AudioTrack { +pub(crate) struct AudioTrack { pub id: String, pub display_name: String, pub audio_is_default: bool, @@ -174,20 +172,20 @@ pub struct AudioTrack { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Captions { +pub(crate) struct Captions { pub player_captions_tracklist_renderer: PlayerCaptionsTracklistRenderer, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct PlayerCaptionsTracklistRenderer { +pub(crate) struct PlayerCaptionsTracklistRenderer { pub caption_tracks: Vec, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CaptionTrack { +pub(crate) struct CaptionTrack { pub base_url: String, #[serde_as(as = "Text")] pub name: String, @@ -197,7 +195,7 @@ pub struct CaptionTrack { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct VideoDetails { +pub(crate) struct VideoDetails { pub video_id: String, pub title: String, #[serde_as(as = "JsonString")] diff --git a/src/client/response/playlist.rs b/src/client/response/playlist.rs index 8f2f521..4327090 100644 --- a/src/client/response/playlist.rs +++ b/src/client/response/playlist.rs @@ -1,16 +1,18 @@ use serde::Deserialize; -use serde_with::serde_as; -use serde_with::{DefaultOnError, VecSkipError}; +use serde_with::{json::JsonString, serde_as, DefaultOnError, VecSkipError}; use crate::serializer::text::{Text, TextComponent}; -use crate::serializer::{MapResult, VecLogError}; +use crate::serializer::{ignore_any, MapResult, VecLogError}; +use crate::util::MappingError; -use super::{Alert, ContentRenderer, ContentsRenderer, ThumbnailsWrap, VideoListItem}; +use super::{ + Alert, ContentRenderer, ContentsRenderer, ContinuationEndpoint, Thumbnails, ThumbnailsWrap, +}; #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Playlist { +pub(crate) struct Playlist { pub contents: Option, pub header: Option
, pub sidebar: Option, @@ -21,7 +23,7 @@ pub struct Playlist { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct PlaylistCont { +pub(crate) struct PlaylistCont { #[serde(default)] #[serde_as(as = "VecSkipError<_>")] pub on_response_received_actions: Vec, @@ -29,52 +31,52 @@ pub struct PlaylistCont { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Contents { +pub(crate) struct Contents { pub two_column_browse_results_renderer: ContentsRenderer, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Tab { +pub(crate) struct Tab { pub tab_renderer: ContentRenderer, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct SectionList { +pub(crate) struct SectionList { pub section_list_renderer: ContentsRenderer, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ItemSection { +pub(crate) struct ItemSection { pub item_section_renderer: ContentsRenderer, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct PlaylistVideoListRenderer { +pub(crate) struct PlaylistVideoListRenderer { pub playlist_video_list_renderer: PlaylistVideoList, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct PlaylistVideoList { +pub(crate) struct PlaylistVideoList { #[serde_as(as = "VecLogError<_>")] - pub contents: MapResult>, + pub contents: MapResult>, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Header { +pub(crate) struct Header { pub playlist_header_renderer: HeaderRenderer, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct HeaderRenderer { +pub(crate) struct HeaderRenderer { pub playlist_id: String, #[serde_as(as = "Text")] pub title: String, @@ -93,48 +95,48 @@ pub struct HeaderRenderer { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct PlaylistHeaderBanner { +pub(crate) struct PlaylistHeaderBanner { pub hero_playlist_thumbnail_renderer: ThumbnailsWrap, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Byline { +pub(crate) struct Byline { pub playlist_byline_renderer: BylineRenderer, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct BylineRenderer { +pub(crate) struct BylineRenderer { #[serde_as(as = "Text")] pub text: String, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Sidebar { +pub(crate) struct Sidebar { pub playlist_sidebar_renderer: SidebarRenderer, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct SidebarRenderer { +pub(crate) struct SidebarRenderer { #[serde_as(as = "VecSkipError<_>")] pub items: Vec, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct SidebarItemPrimary { +pub(crate) struct SidebarItemPrimary { pub playlist_sidebar_primary_info_renderer: SidebarPrimaryInfoRenderer, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct SidebarPrimaryInfoRenderer { +pub(crate) struct SidebarPrimaryInfoRenderer { pub thumbnail_renderer: PlaylistThumbnailRenderer, /// - `"495", " videos"` /// - `"3,310,996 views"` @@ -145,22 +147,70 @@ pub struct SidebarPrimaryInfoRenderer { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct PlaylistThumbnailRenderer { +pub(crate) struct PlaylistThumbnailRenderer { // the alternative field name is used by YTM playlists #[serde(alias = "playlistCustomThumbnailRenderer")] pub playlist_video_thumbnail_renderer: ThumbnailsWrap, } +#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct OnResponseReceivedAction { +pub(crate) enum PlaylistItem { + /// Video in playlist + PlaylistVideoRenderer(PlaylistVideoRenderer), + /// Continauation items are located at the end of a list + /// and contain the continuation token for progressive loading + #[serde(rename_all = "camelCase")] + ContinuationItemRenderer { + continuation_endpoint: ContinuationEndpoint, + }, + /// No video list item (e.g. ad) or unimplemented item + #[serde(other, deserialize_with = "ignore_any")] + None, +} + +/// Video displayed in a playlist +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PlaylistVideoRenderer { + pub video_id: String, + pub thumbnail: Thumbnails, + #[serde_as(as = "Text")] + pub title: String, + #[serde(rename = "shortBylineText")] + pub channel: TextComponent, + #[serde_as(as = "JsonString")] + pub length_seconds: u32, +} + +impl TryFrom for crate::model::PlaylistVideo { + type Error = MappingError; + + fn try_from(video: PlaylistVideoRenderer) -> Result { + Ok(Self { + id: video.video_id, + title: video.title, + length: video.length_seconds, + thumbnail: video.thumbnail.into(), + channel: crate::model::ChannelId::try_from(video.channel)?, + }) + } +} + +// Continuation + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct OnResponseReceivedAction { pub append_continuation_items_action: AppendAction, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct AppendAction { +pub(crate) struct AppendAction { #[serde_as(as = "VecLogError<_>")] - pub continuation_items: MapResult>, + pub continuation_items: MapResult>, } diff --git a/src/client/response/playlist_music.rs b/src/client/response/playlist_music.rs index 85ad5ff..0ab3901 100644 --- a/src/client/response/playlist_music.rs +++ b/src/client/response/playlist_music.rs @@ -11,33 +11,33 @@ use super::{ #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct PlaylistMusic { +pub(crate) struct PlaylistMusic { pub contents: Contents, pub header: Header, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Contents { +pub(crate) struct Contents { pub single_column_browse_results_renderer: ContentsRenderer, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Tab { +pub(crate) struct Tab { pub tab_renderer: ContentRenderer, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct SectionList { +pub(crate) struct SectionList { /// Includes a continuation token for fetching recommendations pub section_list_renderer: MusicContentsRenderer, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ItemSection { +pub(crate) struct ItemSection { #[serde(alias = "musicPlaylistShelfRenderer")] pub music_shelf_renderer: MusicShelf, } @@ -45,7 +45,7 @@ pub struct ItemSection { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MusicShelf { +pub(crate) struct MusicShelf { /// Playlist ID (only for playlists) pub playlist_id: Option, #[serde_as(as = "VecSkipError<_>")] @@ -57,20 +57,20 @@ pub struct MusicShelf { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct PlaylistMusicItem { +pub(crate) struct PlaylistMusicItem { pub music_responsive_list_item_renderer: MusicItem, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Header { +pub(crate) struct Header { pub music_detail_header_renderer: HeaderRenderer, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct HeaderRenderer { +pub(crate) struct HeaderRenderer { #[serde_as(as = "crate::serializer::text::Text")] pub title: String, /// Content type + Channel/Artist + Year. diff --git a/src/client/response/search.rs b/src/client/response/search.rs index e6f27d6..15869fb 100644 --- a/src/client/response/search.rs +++ b/src/client/response/search.rs @@ -1,100 +1,25 @@ use serde::Deserialize; -use serde_with::json::JsonString; -use serde_with::{serde_as, VecSkipError}; +use serde_with::{json::JsonString, serde_as}; -use crate::serializer::ignore_any; -use crate::serializer::{text::Text, MapResult, VecLogError}; - -use super::{ - ChannelRenderer, ContentsRenderer, ContinuationEndpoint, PlaylistRenderer, VideoRenderer, -}; +use super::video_item::YouTubeListRendererWrap; #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Search { +pub(crate) struct Search { #[serde_as(as = "Option")] pub estimated_results: Option, pub contents: Contents, } -#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct SearchCont { - #[serde_as(as = "Option")] - pub estimated_results: Option, - #[serde_as(as = "VecSkipError<_>")] - pub on_response_received_commands: Vec, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct SearchContCommand { - pub append_continuation_items_action: SearchContAction, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct SearchContAction { - pub continuation_items: Vec, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct Contents { +pub(crate) struct Contents { pub two_column_search_results_renderer: TwoColumnSearchResultsRenderer, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct TwoColumnSearchResultsRenderer { - pub primary_contents: PrimaryContents, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct PrimaryContents { - pub section_list_renderer: ContentsRenderer, -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub enum SectionListItem { - #[serde(rename_all = "camelCase")] - ItemSectionRenderer { - #[serde_as(as = "VecLogError<_>")] - contents: MapResult>, - }, - /// Continuation token to fetch more search results - #[serde(rename_all = "camelCase")] - ContinuationItemRenderer { - continuation_endpoint: ContinuationEndpoint, - }, -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub enum SearchItem { - /// Video in search results - VideoRenderer(VideoRenderer), - /// Playlist in search results - PlaylistRenderer(PlaylistRenderer), - /// Channel displayed in search results - ChannelRenderer(ChannelRenderer), - - /// Corrected search query - #[serde(rename_all = "camelCase")] - ShowingResultsForRenderer { - #[serde_as(as = "Text")] - corrected_query: String, - }, - /// No search result item (e.g. ad) or unimplemented item - /// - /// Unimplemented: - /// - shelfRenderer (e.g. Latest from channel, For you) - #[serde(other, deserialize_with = "ignore_any")] - None, +pub(crate) struct TwoColumnSearchResultsRenderer { + pub primary_contents: YouTubeListRendererWrap, } diff --git a/src/client/response/trends.rs b/src/client/response/trends.rs index ab9deac..3ac3c57 100644 --- a/src/client/response/trends.rs +++ b/src/client/response/trends.rs @@ -1,133 +1,37 @@ use serde::Deserialize; use serde_with::{serde_as, VecSkipError}; -use crate::serializer::{ignore_any, MapResult, VecLogError}; - -use super::{ContentRenderer, ContentsRenderer, VideoListItem, VideoRenderer}; +use super::{video_item::YouTubeListRendererWrap, ContentRenderer, ResponseContext}; #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Startpage { - pub contents: Contents, +pub(crate) struct Startpage { + pub contents: Contents, pub response_context: ResponseContext, } -#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct StartpageCont { - #[serde(default)] - #[serde_as(as = "VecSkipError<_>")] - pub on_response_received_actions: Vec, +pub(crate) struct Trending { + pub contents: Contents, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Contents { - pub two_column_browse_results_renderer: T, +pub(crate) struct Contents { + pub two_column_browse_results_renderer: BrowseResults, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct BrowseResultsStartpage { +pub(crate) struct BrowseResults { #[serde_as(as = "VecSkipError<_>")] - pub tabs: Vec>, -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct BrowseResultsTrends { - #[serde_as(as = "VecSkipError<_>")] - pub tabs: Vec>, + pub tabs: Vec>, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Tab { +pub(crate) struct Tab { pub tab_renderer: ContentRenderer, } - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct StartpageTabContent { - pub rich_grid_renderer: RichGridRenderer, -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct RichGridRenderer { - #[serde_as(as = "VecLogError<_>")] - pub contents: MapResult>, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct Trending { - pub contents: Contents, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct TrendingTabContent { - pub section_list_renderer: ContentsRenderer, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ItemSectionRenderer { - pub item_section_renderer: ContentsRenderer, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ShelfRenderer { - pub shelf_renderer: ContentRenderer, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ShelfContents { - pub expanded_shelf_contents_renderer: Option, -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ShelfContentsRenderer { - #[serde_as(as = "VecLogError<_>")] - pub items: MapResult>, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ResponseContext { - pub visitor_data: Option, -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -#[allow(clippy::large_enum_variant)] -pub enum TrendingListItem { - VideoRenderer(VideoRenderer), - - #[serde(other, deserialize_with = "ignore_any")] - None, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct OnResponseReceivedAction { - pub append_continuation_items_action: AppendAction, -} - -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct AppendAction { - #[serde_as(as = "VecLogError<_>")] - pub continuation_items: MapResult>, -} diff --git a/src/client/response/url_endpoint.rs b/src/client/response/url_endpoint.rs index c2c7dff..396dc89 100644 --- a/src/client/response/url_endpoint.rs +++ b/src/client/response/url_endpoint.rs @@ -6,14 +6,14 @@ use crate::model::UrlTarget; /// navigation/resolve_url response model #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ResolvedUrl { +pub(crate) struct ResolvedUrl { pub endpoint: NavigationEndpoint, } #[serde_as] #[derive(Debug, Deserialize, Default)] #[serde(rename_all = "camelCase")] -pub struct NavigationEndpoint { +pub(crate) struct NavigationEndpoint { #[serde(default)] #[serde_as(deserialize_as = "DefaultOnError")] pub watch_endpoint: Option, @@ -30,7 +30,7 @@ pub struct NavigationEndpoint { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct WatchEndpoint { +pub(crate) struct WatchEndpoint { pub video_id: String, #[serde(default)] pub start_time_seconds: u32, @@ -38,43 +38,43 @@ pub struct WatchEndpoint { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct BrowseEndpoint { +pub(crate) struct BrowseEndpoint { pub browse_id: String, pub browse_endpoint_context_supported_configs: Option, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct UrlEndpoint { +pub(crate) struct UrlEndpoint { pub url: String, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct BrowseEndpointConfig { +pub(crate) struct BrowseEndpointConfig { pub browse_endpoint_context_music_config: BrowseEndpointMusicConfig, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct BrowseEndpointMusicConfig { +pub(crate) struct BrowseEndpointMusicConfig { pub page_type: PageType, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CommandMetadata { +pub(crate) struct CommandMetadata { pub web_command_metadata: WebCommandMetadata, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct WebCommandMetadata { +pub(crate) struct WebCommandMetadata { pub web_page_type: PageType, } #[derive(Debug, Clone, Copy, Deserialize, PartialEq, Eq)] -pub enum PageType { +pub(crate) enum PageType { #[serde(rename = "MUSIC_PAGE_TYPE_ARTIST")] Artist, #[serde(rename = "MUSIC_PAGE_TYPE_ALBUM")] @@ -89,7 +89,7 @@ pub enum PageType { } impl PageType { - pub fn to_url_target(self, id: String) -> UrlTarget { + pub(crate) fn to_url_target(self, id: String) -> UrlTarget { match self { PageType::Artist => UrlTarget::Channel { id }, PageType::Album => UrlTarget::Playlist { id }, diff --git a/src/client/response/video_details.rs b/src/client/response/video_details.rs index f50baf9..19a0cce 100644 --- a/src/client/response/video_details.rs +++ b/src/client/response/video_details.rs @@ -4,6 +4,7 @@ use serde::Deserialize; use serde_with::serde_as; use serde_with::{DefaultOnError, VecSkipError}; +use crate::serializer::text::TextComponent; use crate::serializer::{ ignore_any, text::{AccessibilityText, AttributedText, Text, TextComponents}, @@ -12,8 +13,9 @@ use crate::serializer::{ use super::{ url_endpoint::BrowseEndpoint, ContinuationEndpoint, ContinuationItemRenderer, Icon, - MusicContinuation, Thumbnails, VideoListItem, VideoOwner, + MusicContinuation, Thumbnails, }; +use super::{ChannelBadge, ResponseContext, YouTubeListItem}; /* #VIDEO DETAILS @@ -23,7 +25,7 @@ use super::{ #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct VideoDetails { +pub(crate) struct VideoDetails { /// Video metadata + recommended videos pub contents: Option, /// Video ID @@ -31,18 +33,19 @@ pub struct VideoDetails { /// Video chapters + comment section #[serde_as(as = "VecLogError<_>")] pub engagement_panels: MapResult>, + pub response_context: ResponseContext, } /// Video details main object, contains video metadata and recommended videos #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Contents { +pub(crate) struct Contents { pub two_column_watch_next_results: TwoColumnWatchNextResults, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct TwoColumnWatchNextResults { +pub(crate) struct TwoColumnWatchNextResults { /// Metadata about the video pub results: VideoResultsWrap, /// Video recommendations @@ -54,7 +57,7 @@ pub struct TwoColumnWatchNextResults { /// Metadata about the video #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct VideoResultsWrap { +pub(crate) struct VideoResultsWrap { pub results: VideoResults, } @@ -62,7 +65,7 @@ pub struct VideoResultsWrap { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct VideoResults { +pub(crate) struct VideoResults { #[serde_as(as = "VecLogError<_>")] pub contents: MapResult>, } @@ -71,7 +74,7 @@ pub struct VideoResults { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub enum VideoResultsItem { +pub(crate) enum VideoResultsItem { #[serde(rename_all = "camelCase")] VideoPrimaryInfoRenderer { #[serde_as(as = "Text")] @@ -105,14 +108,14 @@ pub enum VideoResultsItem { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ViewCount { +pub(crate) struct ViewCount { pub video_view_count_renderer: ViewCountRenderer, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ViewCountRenderer { +pub(crate) struct ViewCountRenderer { /// View count (`232,975,196 views`) #[serde_as(as = "Text")] pub view_count: String, @@ -123,7 +126,7 @@ pub struct ViewCountRenderer { /// Like/Dislike buttons #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct VideoActions { +pub(crate) struct VideoActions { pub menu_renderer: VideoActionsMenu, } @@ -131,7 +134,7 @@ pub struct VideoActions { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct VideoActionsMenu { +pub(crate) struct VideoActionsMenu { #[serde_as(as = "VecSkipError<_>")] pub top_level_buttons: Vec, } @@ -144,7 +147,7 @@ pub struct VideoActionsMenu { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub enum TopLevelButton { +pub(crate) enum TopLevelButton { ToggleButtonRenderer(ToggleButton), #[serde(rename_all = "camelCase")] SegmentedLikeDislikeButtonRenderer { @@ -155,7 +158,7 @@ pub enum TopLevelButton { /// Like/Dislike button #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ToggleButtonWrap { +pub(crate) struct ToggleButtonWrap { pub toggle_button_renderer: ToggleButton, } @@ -163,7 +166,7 @@ pub struct ToggleButtonWrap { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ToggleButton { +pub(crate) struct ToggleButton { /// Icon type: `LIKE` / `DISLIKE` pub default_icon: Icon, /// Number of likes (`like this video along with 4,010,156 other people`) @@ -173,11 +176,32 @@ pub struct ToggleButton { pub accessibility_data: String, } +/// Video channel information +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct VideoOwner { + pub video_owner_renderer: VideoOwnerRenderer, +} + +/// Video channel information +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct VideoOwnerRenderer { + pub title: TextComponent, + pub thumbnail: Thumbnails, + #[serde_as(as = "Option")] + pub subscriber_count_text: Option, + #[serde(default)] + #[serde_as(as = "VecSkipError<_>")] + pub badges: Vec, +} + /// Shows additional video metadata. Its only known use is for /// the Creative Commonse License. #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MetadataRowContainer { +pub(crate) struct MetadataRowContainer { pub metadata_row_container_renderer: MetadataRowContainerRenderer, } @@ -185,14 +209,14 @@ pub struct MetadataRowContainer { /// the Creative Commonse License. #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MetadataRowContainerRenderer { +pub(crate) struct MetadataRowContainerRenderer { pub rows: Vec, } /// Additional video metadata item (Creative Commons License) #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MetadataRow { +pub(crate) struct MetadataRow { pub metadata_row_renderer: MetadataRowRenderer, } @@ -200,7 +224,7 @@ pub struct MetadataRow { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MetadataRowRenderer { +pub(crate) struct MetadataRowRenderer { // `License` // #[serde_as(as = "Text")] // pub title: String, @@ -215,13 +239,13 @@ pub struct MetadataRowRenderer { /// Contains current video ID #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CurrentVideoEndpoint { +pub(crate) struct CurrentVideoEndpoint { pub watch_endpoint: CurrentVideoWatchEndpoint, } /// Contains current video ID #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CurrentVideoWatchEndpoint { +pub(crate) struct CurrentVideoWatchEndpoint { pub video_id: String, } @@ -232,7 +256,7 @@ pub struct CurrentVideoWatchEndpoint { #[serde_as] #[derive(Default, Debug, Deserialize)] #[serde(rename_all = "kebab-case", tag = "sectionIdentifier")] -pub enum ItemSection { +pub(crate) enum ItemSection { CommentsEntryPoint { #[serde_as(as = "VecSkipError<_>")] contents: Vec, @@ -248,7 +272,7 @@ pub enum ItemSection { /// Item section containing comment count #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ItemSectionCommentCount { +pub(crate) struct ItemSectionCommentCount { pub comments_entry_point_header_renderer: CommentsEntryPointHeaderRenderer, } @@ -256,7 +280,7 @@ pub struct ItemSectionCommentCount { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CommentsEntryPointHeaderRenderer { +pub(crate) struct CommentsEntryPointHeaderRenderer { #[serde_as(as = "Text")] pub comment_count: String, } @@ -264,14 +288,14 @@ pub struct CommentsEntryPointHeaderRenderer { /// Item section containing comments ctoken #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ItemSectionComments { +pub(crate) struct ItemSectionComments { pub continuation_item_renderer: ContinuationItemRenderer, } /// Video recommendations #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct RecommendationResultsWrap { +pub(crate) struct RecommendationResultsWrap { pub secondary_results: RecommendationResults, } @@ -279,10 +303,10 @@ pub struct RecommendationResultsWrap { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct RecommendationResults { +pub(crate) struct RecommendationResults { /// Can be `None` for age-restricted videos #[serde_as(as = "Option>")] - pub results: Option>>, + pub results: Option>>, #[serde_as(as = "Option>")] pub continuations: Option>, } @@ -291,7 +315,7 @@ pub struct RecommendationResults { /// and the comment section. #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct EngagementPanel { +pub(crate) struct EngagementPanel { pub engagement_panel_section_list_renderer: EngagementPanelRenderer, } @@ -299,7 +323,7 @@ pub struct EngagementPanel { /// and the comment section. #[derive(Debug, Deserialize)] #[serde(rename_all = "kebab-case", tag = "targetId")] -pub enum EngagementPanelRenderer { +pub(crate) enum EngagementPanelRenderer { /// Chapter markers EngagementPanelMacroMarkersDescriptionChapters { content: ChapterMarkersContent }, /// Comment section (contains no comments, but the @@ -318,7 +342,7 @@ pub enum EngagementPanelRenderer { /// Chapter markers #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct ChapterMarkersContent { +pub(crate) struct ChapterMarkersContent { pub macro_markers_list_renderer: MacroMarkersListRenderer, } @@ -326,7 +350,7 @@ pub struct ChapterMarkersContent { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MacroMarkersListRenderer { +pub(crate) struct MacroMarkersListRenderer { #[serde_as(as = "VecLogError<_>")] pub contents: MapResult>, } @@ -334,7 +358,7 @@ pub struct MacroMarkersListRenderer { /// Chapter marker #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MacroMarkersListItem { +pub(crate) struct MacroMarkersListItem { pub macro_markers_list_item_renderer: MacroMarkersListItemRenderer, } @@ -342,7 +366,7 @@ pub struct MacroMarkersListItem { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MacroMarkersListItemRenderer { +pub(crate) struct MacroMarkersListItemRenderer { /// Contains chapter start time in seconds pub on_tap: MacroMarkersListItemOnTap, #[serde(default)] @@ -355,13 +379,13 @@ pub struct MacroMarkersListItemRenderer { /// Contains chapter start time in seconds #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MacroMarkersListItemOnTap { +pub(crate) struct MacroMarkersListItemOnTap { pub watch_endpoint: MacroMarkersListItemWatchEndpoint, } /// Contains chapter start time in seconds #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct MacroMarkersListItemWatchEndpoint { +pub(crate) struct MacroMarkersListItemWatchEndpoint { /// Chapter start time in seconds pub start_time_seconds: u32, } @@ -370,7 +394,7 @@ pub struct MacroMarkersListItemWatchEndpoint { /// (contains continuation tokens for fetching top/latest comments) #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CommentItemSectionHeader { +pub(crate) struct CommentItemSectionHeader { pub engagement_panel_title_header_renderer: CommentItemSectionHeaderRenderer, } @@ -379,21 +403,14 @@ pub struct CommentItemSectionHeader { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CommentItemSectionHeaderRenderer { - /// Approximate comment count (e.g. `81`, `2.2K`, `705K`) - /// - /// The accurate count is included in the first comment response. - /// - /// Is `None` if there are no comments. - #[serde_as(as = "Option")] - pub contextual_info: Option, +pub(crate) struct CommentItemSectionHeaderRenderer { pub menu: CommentItemSectionHeaderMenu, } /// Comment section menu #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CommentItemSectionHeaderMenu { +pub(crate) struct CommentItemSectionHeaderMenu { pub sort_filter_sub_menu_renderer: CommentItemSectionHeaderMenuRenderer, } @@ -404,48 +421,18 @@ pub struct CommentItemSectionHeaderMenu { /// - Latest comments #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CommentItemSectionHeaderMenuRenderer { +pub(crate) struct CommentItemSectionHeaderMenuRenderer { pub sub_menu_items: Vec, } /// Comment section menu item #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CommentItemSectionHeaderMenuItem { +pub(crate) struct CommentItemSectionHeaderMenuItem { /// Continuation token for fetching comments pub service_endpoint: ContinuationEndpoint, } -/* -#RECOMMENDATIONS CONTINUATION -*/ - -/// Video recommendations continuation response -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct VideoRecommendations { - #[serde(default)] - #[serde_as(as = "VecSkipError<_>")] - pub on_response_received_endpoints: Vec, -} - -/// Video recommendations continuation -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct RecommendationsContItem { - pub append_continuation_items_action: AppendRecommendations, -} - -/// Video recommendations continuation -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct AppendRecommendations { - #[serde_as(as = "VecLogError<_>")] - pub continuation_items: MapResult>, -} - /* #COMMENTS CONTINUATION */ @@ -454,7 +441,7 @@ pub struct AppendRecommendations { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct VideoComments { +pub(crate) struct VideoComments { /// - Initial response: 2*reloadContinuationItemsCommand /// - 1*commentsHeaderRenderer: number of comments /// - n*commentThreadRenderer, continuationItemRenderer: @@ -465,14 +452,14 @@ pub struct VideoComments { /// - Comment replies: appendContinuationItemsAction /// - n*commentRenderer, continuationItemRenderer: /// replies + continuation - #[serde_as(as = "Option>")] - pub on_response_received_endpoints: Option>>, + #[serde_as(as = "VecLogError<_>")] + pub on_response_received_endpoints: MapResult>, } /// Video comments continuation #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CommentsContItem { +pub(crate) struct CommentsContItem { #[serde(alias = "reloadContinuationItemsCommand")] pub append_continuation_items_action: AppendComments, } @@ -481,7 +468,7 @@ pub struct CommentsContItem { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct AppendComments { +pub(crate) struct AppendComments { #[serde_as(as = "VecLogError<_>")] pub continuation_items: MapResult>, } @@ -489,7 +476,7 @@ pub struct AppendComments { #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub enum CommentListItem { +pub(crate) enum CommentListItem { /// Top-level comment #[serde(rename_all = "camelCase")] CommentThreadRenderer { @@ -519,14 +506,14 @@ pub enum CommentListItem { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Comment { +pub(crate) struct Comment { pub comment_renderer: CommentRenderer, } #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CommentRenderer { +pub(crate) struct CommentRenderer { /// Author name /// /// There may be comments with missing authors (possibly deleted users?) @@ -557,13 +544,13 @@ pub struct CommentRenderer { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct AuthorEndpoint { +pub(crate) struct AuthorEndpoint { pub browse_endpoint: BrowseEndpoint, } #[derive(Default, Clone, Copy, Debug, Deserialize, PartialEq, Eq)] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] -pub enum CommentPriority { +pub(crate) enum CommentPriority { /// Default rendering priority #[default] RenderingPriorityUnknown, @@ -575,7 +562,7 @@ pub enum CommentPriority { /// for fetching them. #[derive(Default, Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct Replies { +pub(crate) struct Replies { pub comment_replies_renderer: RepliesRenderer, } @@ -584,7 +571,7 @@ pub struct Replies { #[serde_as] #[derive(Default, Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct RepliesRenderer { +pub(crate) struct RepliesRenderer { #[serde_as(as = "VecSkipError<_>")] pub contents: Vec, } @@ -593,7 +580,7 @@ pub struct RepliesRenderer { /// Contains the CreatorHeart. #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CommentActionButtons { +pub(crate) struct CommentActionButtons { pub comment_action_buttons_renderer: CommentActionButtonsRenderer, } @@ -601,7 +588,7 @@ pub struct CommentActionButtons { /// Contains the CreatorHeart. #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CommentActionButtonsRenderer { +pub(crate) struct CommentActionButtonsRenderer { pub like_button: ToggleButtonWrap, pub creator_heart: Option, } @@ -609,27 +596,27 @@ pub struct CommentActionButtonsRenderer { /// Video creators can endorse comments by marking them with a ❤️. #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CreatorHeart { +pub(crate) struct CreatorHeart { pub creator_heart_renderer: CreatorHeartRenderer, } /// Video creators can endorse comments by marking them with a ❤️. #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct CreatorHeartRenderer { +pub(crate) struct CreatorHeartRenderer { pub is_hearted: bool, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct AuthorCommentBadge { +pub(crate) struct AuthorCommentBadge { pub author_comment_badge_renderer: AuthorCommentBadgeRenderer, } /// YouTube channel badge (verified) of the comment author #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub struct AuthorCommentBadgeRenderer { +pub(crate) struct AuthorCommentBadgeRenderer { /// Verified: `CHECK` /// /// Artist: `OFFICIAL_ARTIST_BADGE` diff --git a/src/client/response/video_item.rs b/src/client/response/video_item.rs new file mode 100644 index 0000000..fd51b90 --- /dev/null +++ b/src/client/response/video_item.rs @@ -0,0 +1,507 @@ +use chrono::TimeZone; +use serde::Deserialize; +use serde_with::{json::JsonString, serde_as, DefaultOnError, VecSkipError}; + +use super::{ChannelBadge, ContinuationEndpoint, Thumbnails}; +use crate::{ + model::{ChannelId, ChannelItem, ChannelTag, PlaylistItem, VideoItem, YouTubeItem}, + param::Language, + serializer::{ + ignore_any, + text::{Text, TextComponent}, + MapResult, VecLogError, + }, + timeago, + util::{self, TryRemove}, +}; + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) enum YouTubeListItem { + #[serde(alias = "gridVideoRenderer", alias = "compactVideoRenderer")] + VideoRenderer(VideoRenderer), + + #[serde(alias = "gridPlaylistRenderer")] + PlaylistRenderer(PlaylistRenderer), + + ChannelRenderer(ChannelRenderer), + + /// Continauation items are located at the end of a list + /// and contain the continuation token for progressive loading + #[serde(rename_all = "camelCase")] + ContinuationItemRenderer { + continuation_endpoint: ContinuationEndpoint, + }, + + /// Corrected search query + #[serde(rename_all = "camelCase")] + ShowingResultsForRenderer { + #[serde_as(as = "Text")] + corrected_query: String, + }, + + /// Contains video on startpage + /// + /// Seems to be currently A/B tested on the channel page, + /// as of 11.10.2022 + #[serde(alias = "shelfRenderer")] + RichItemRenderer { + content: Box, + }, + + /// Contains search results + /// + /// Seems to be currently A/B tested on the video details page, + /// as of 11.10.2022 + #[serde(alias = "expandedShelfContentsRenderer")] + ItemSectionRenderer { + #[serde(alias = "items")] + #[serde_as(as = "VecLogError<_>")] + contents: MapResult>, + }, + + /// No video list item (e.g. ad) or unimplemented item + /// + /// Unimplemented: + /// - compactPlaylistRenderer (recommended playlists) + /// - compactRadioRenderer (recommended mix) + #[serde(other, deserialize_with = "ignore_any")] + None, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct VideoRenderer { + pub video_id: String, + pub thumbnail: Thumbnails, + #[serde_as(as = "Text")] + pub title: String, + #[serde(rename = "shortBylineText")] + pub channel: Option, + pub channel_thumbnail: Option, + pub channel_thumbnail_supported_renderers: Option, + #[serde_as(as = "Option")] + pub published_time_text: Option, + #[serde_as(as = "Option")] + pub length_text: Option, + /// Contains `No views` if the view count is zero + #[serde_as(as = "Option")] + pub view_count_text: Option, + /// Channel verification badge + #[serde(default)] + #[serde_as(as = "VecSkipError<_>")] + pub owner_badges: Vec, + /// Contains live tag for recommended videos + #[serde(default)] + #[serde_as(as = "VecSkipError<_>")] + pub badges: Vec, + /// Contains Short/Live tag + #[serde_as(as = "VecSkipError<_>")] + pub thumbnail_overlays: Vec, + /// Abbreviated video description (on startpage) + #[serde_as(as = "Option")] + pub description_snippet: Option, + /// Contains abbreviated video description (on search page) + #[serde_as(as = "Option>")] + pub detailed_metadata_snippets: Option>, + /// Release date for upcoming videos + pub upcoming_event_data: Option, +} + +/// Playlist displayed in search results +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PlaylistRenderer { + pub playlist_id: String, + #[serde_as(as = "Text")] + pub title: String, + pub thumbnail: Option, + /// Used by playlists from search page + /// + /// The first item of this list contains the playlist thumbnail, + /// subsequent items contain very small thumbnails of the next playlist videos + pub thumbnails: Option>, + #[serde_as(as = "Option")] + pub video_count: Option, + #[serde_as(as = "Option")] + pub video_count_short_text: Option, + #[serde(rename = "shortBylineText")] + pub channel: Option, + /// Channel verification badge + #[serde(default)] + #[serde_as(as = "VecSkipError<_>")] + pub owner_badges: Vec, +} + +/// Channel displayed in search results +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ChannelRenderer { + pub channel_id: String, + #[serde_as(as = "Text")] + pub title: String, + pub thumbnail: Thumbnails, + /// Abbreviated channel description + /// + /// Not present if the channel has no description + #[serde(default)] + #[serde_as(as = "Text")] + pub description_snippet: String, + /// Not present if the channel has no videos + #[serde_as(as = "Option")] + pub video_count_text: Option, + #[serde_as(as = "Option")] + pub subscriber_count_text: Option, + /// Channel verification badge + #[serde(default)] + #[serde_as(as = "VecSkipError<_>")] + pub owner_badges: Vec, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct YouTubeListRendererWrap { + #[serde(alias = "richGridRenderer")] + pub section_list_renderer: YouTubeListRenderer, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct YouTubeListRenderer { + #[serde_as(as = "VecLogError<_>")] + pub contents: MapResult>, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct UpcomingEventData { + /// Unixtime in seconds + #[serde_as(as = "JsonString")] + pub start_time: i64, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct TimeOverlay { + pub thumbnail_overlay_time_status_renderer: TimeOverlayRenderer, +} + +/// Badges are displayed on the video thumbnail and +/// show certain video properties (e.g. active livestream) +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct VideoBadge { + pub metadata_badge_renderer: VideoBadgeRenderer, +} + +/// Badges are displayed on the video thumbnail and +/// show certain video properties (e.g. active livestream) +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct VideoBadgeRenderer { + pub style: VideoBadgeStyle, +} + +#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, Hash)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +pub(crate) enum VideoBadgeStyle { + /// Active livestream + BadgeStyleTypeLiveNow, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct TimeOverlayRenderer { + /// `29:54` + /// + /// Is `LIVE` in case of a livestream and `SHORTS` in case of a short video + #[serde_as(as = "Text")] + pub text: String, + #[serde(default)] + #[serde_as(deserialize_as = "DefaultOnError")] + pub style: TimeOverlayStyle, +} + +#[derive(Default, Clone, Copy, Debug, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +pub(crate) enum TimeOverlayStyle { + #[default] + Default, + Live, + Shorts, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct DetailedMetadataSnippet { + #[serde_as(as = "Text")] + pub snippet_text: String, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ChannelThumbnailSupportedRenderers { + pub channel_thumbnail_with_link_renderer: ChannelThumbnailWithLinkRenderer, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ChannelThumbnailWithLinkRenderer { + pub thumbnail: Thumbnails, +} + +trait IsLive { + fn is_live(&self) -> bool; +} + +trait IsShort { + fn is_short(&self) -> bool; +} + +impl IsLive for Vec { + fn is_live(&self) -> bool { + self.iter().any(|badge| { + badge.metadata_badge_renderer.style == VideoBadgeStyle::BadgeStyleTypeLiveNow + }) + } +} + +impl IsLive for Vec { + fn is_live(&self) -> bool { + self.iter().any(|overlay| { + overlay.thumbnail_overlay_time_status_renderer.style == TimeOverlayStyle::Live + }) + } +} + +impl IsShort for Vec { + fn is_short(&self) -> bool { + self.iter().any(|overlay| { + overlay.thumbnail_overlay_time_status_renderer.style == TimeOverlayStyle::Shorts + }) + } +} + +/// Result of mapping a list of different YouTube enities +/// (videos, channels, playlists) +#[derive(Debug)] +pub(crate) struct YouTubeListMapper { + lang: Language, + pub items: Vec, + pub warnings: Vec, + pub ctoken: Option, + pub corrected_query: Option, +} + +impl YouTubeListMapper { + pub fn new(lang: Language) -> Self { + Self { + lang, + items: Vec::new(), + warnings: Vec::new(), + ctoken: None, + corrected_query: None, + } + } + + fn map_video(&self, video: VideoRenderer) -> VideoItem { + let mut tn_overlays = video.thumbnail_overlays; + let length_text = video.length_text.or_else(|| { + tn_overlays + .try_swap_remove(0) + .map(|overlay| overlay.thumbnail_overlay_time_status_renderer.text) + }); + + VideoItem { + id: video.video_id, + title: video.title, + length: length_text.and_then(|txt| util::parse_video_length(&txt)), + thumbnail: video.thumbnail.into(), + channel: video.channel.and_then(|c| { + ChannelId::try_from(c).ok().map(|c| ChannelTag { + id: c.id, + name: c.name, + avatar: video + .channel_thumbnail_supported_renderers + .map(|tn| tn.channel_thumbnail_with_link_renderer.thumbnail) + .or(video.channel_thumbnail) + .unwrap_or_default() + .into(), + verification: video.owner_badges.into(), + subscriber_count: None, + }) + }), + publish_date: video + .upcoming_event_data + .as_ref() + .map(|upc| { + chrono::Local.from_utc_datetime(&chrono::NaiveDateTime::from_timestamp( + upc.start_time, + 0, + )) + }) + .or_else(|| { + video + .published_time_text + .as_ref() + .and_then(|txt| timeago::parse_timeago_to_dt(self.lang, txt)) + }), + publish_date_txt: video.published_time_text, + view_count: video + .view_count_text + .map(|txt| util::parse_numeric(&txt).unwrap_or_default()), + is_live: tn_overlays.is_live() || video.badges.is_live(), + is_short: tn_overlays.is_short(), + is_upcoming: video.upcoming_event_data.is_some(), + short_description: video + .detailed_metadata_snippets + .and_then(|mut snippets| snippets.try_swap_remove(0).map(|s| s.snippet_text)) + .or(video.description_snippet), + } + } + + fn map_playlist(playlist: PlaylistRenderer) -> PlaylistItem { + PlaylistItem { + id: playlist.playlist_id, + name: playlist.title, + thumbnail: playlist + .thumbnail + .or_else(|| playlist.thumbnails.and_then(|mut t| t.try_swap_remove(0))) + .unwrap_or_default() + .into(), + channel: playlist.channel.and_then(|c| { + ChannelId::try_from(c).ok().map(|c| ChannelTag { + id: c.id, + name: c.name, + avatar: Vec::new(), + verification: playlist.owner_badges.into(), + subscriber_count: None, + }) + }), + video_count: playlist.video_count.or_else(|| { + playlist + .video_count_short_text + .and_then(|txt| util::parse_numeric(&txt).ok()) + }), + } + } + + fn map_channel(channel: ChannelRenderer) -> ChannelItem { + ChannelItem { + id: channel.channel_id, + name: channel.title, + avatar: channel.thumbnail.into(), + verification: channel.owner_badges.into(), + subscriber_count: channel + .subscriber_count_text + .and_then(|txt| util::parse_numeric(&txt).ok()), + video_count: channel + .video_count_text + .and_then(|txt| util::parse_numeric(&txt).ok()) + .unwrap_or_default(), + short_description: channel.description_snippet, + } + } +} + +impl YouTubeListMapper { + fn map_item(&mut self, item: YouTubeListItem) { + match item { + YouTubeListItem::VideoRenderer(video) => { + self.items.push(YouTubeItem::Video(self.map_video(video))); + } + YouTubeListItem::PlaylistRenderer(playlist) => self + .items + .push(YouTubeItem::Playlist(Self::map_playlist(playlist))), + YouTubeListItem::ChannelRenderer(channel) => { + self.items + .push(YouTubeItem::Channel(Self::map_channel(channel))); + } + YouTubeListItem::ContinuationItemRenderer { + continuation_endpoint, + } => self.ctoken = Some(continuation_endpoint.continuation_command.token), + YouTubeListItem::ShowingResultsForRenderer { corrected_query } => { + self.corrected_query = Some(corrected_query); + } + YouTubeListItem::RichItemRenderer { content } => { + self.map_item(*content); + } + YouTubeListItem::ItemSectionRenderer { mut contents } => { + self.warnings.append(&mut contents.warnings); + contents.c.into_iter().for_each(|it| self.map_item(it)); + } + YouTubeListItem::None => {} + } + } + + pub(crate) fn map_response(&mut self, mut res: MapResult>) { + self.warnings.append(&mut res.warnings); + res.c.into_iter().for_each(|item| self.map_item(item)); + } +} + +impl YouTubeListMapper { + fn map_item(&mut self, item: YouTubeListItem) { + match item { + YouTubeListItem::VideoRenderer(video) => { + self.items.push(self.map_video(video)); + } + YouTubeListItem::ContinuationItemRenderer { + continuation_endpoint, + } => self.ctoken = Some(continuation_endpoint.continuation_command.token), + YouTubeListItem::ShowingResultsForRenderer { corrected_query } => { + self.corrected_query = Some(corrected_query); + } + YouTubeListItem::RichItemRenderer { content } => { + self.map_item(*content); + } + YouTubeListItem::ItemSectionRenderer { mut contents } => { + self.warnings.append(&mut contents.warnings); + contents.c.into_iter().for_each(|it| self.map_item(it)); + } + _ => {} + } + } + + pub(crate) fn map_response(&mut self, mut res: MapResult>) { + self.warnings.append(&mut res.warnings); + res.c.into_iter().for_each(|item| self.map_item(item)); + } +} + +impl YouTubeListMapper { + fn map_item(&mut self, item: YouTubeListItem) { + match item { + YouTubeListItem::PlaylistRenderer(playlist) => { + self.items.push(Self::map_playlist(playlist)) + } + YouTubeListItem::ContinuationItemRenderer { + continuation_endpoint, + } => self.ctoken = Some(continuation_endpoint.continuation_command.token), + YouTubeListItem::ShowingResultsForRenderer { corrected_query } => { + self.corrected_query = Some(corrected_query); + } + YouTubeListItem::RichItemRenderer { content } => { + self.map_item(*content); + } + YouTubeListItem::ItemSectionRenderer { mut contents } => { + self.warnings.append(&mut contents.warnings); + contents.c.into_iter().for_each(|it| self.map_item(it)); + } + _ => {} + } + } + + pub(crate) fn map_response(&mut self, mut res: MapResult>) { + self.warnings.append(&mut res.warnings); + res.c.into_iter().for_each(|item| self.map_item(item)); + } +} diff --git a/src/client/search.rs b/src/client/search.rs index c0f324b..8d93883 100644 --- a/src/client/search.rs +++ b/src/client/search.rs @@ -3,15 +3,11 @@ use serde::{de::IgnoredAny, Serialize}; use crate::{ deobfuscate::Deobfuscator, error::{Error, ExtractionError}, - model::{Paginator, SearchItem, SearchResult, SearchVideo}, + model::{Paginator, SearchResult, YouTubeItem}, param::{search_filter::SearchFilter, Language}, - util::TryRemove, }; -use super::{ - response::{self, TryFromWLang}, - ClientType, MapResponse, MapResult, QContinuation, RustyPipeQuery, YTContext, -}; +use super::{response, ClientType, MapResponse, MapResult, RustyPipeQuery, YTContext}; #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] @@ -63,23 +59,6 @@ impl RustyPipeQuery { .await } - pub async fn search_continuation(self, ctoken: &str) -> Result, Error> { - let context = self.get_context(ClientType::Desktop, true).await; - let request_body = QContinuation { - context, - continuation: ctoken, - }; - - self.execute_request::( - ClientType::Desktop, - "search_continuation", - ctoken, - "search", - &request_body, - ) - .await - } - pub async fn search_suggestion(self, query: &str) -> Result, Error> { let url = url::Url::parse_with_params("https://suggestqueries-clients6.youtube.com/complete/search?client=youtube&gs_rn=64&gs_ri=youtube&ds=yt&cp=1&gs_id=4&xhr=t&xssi=t", &[("hl", self.opts.lang.to_string()), ("gl", self.opts.country.to_string()), ("q", query.to_string())] @@ -114,135 +93,33 @@ impl MapResponse for response::Search { lang: Language, _deobf: Option<&Deobfuscator>, ) -> Result, ExtractionError> { - let section_list_items = self + let items = self .contents .two_column_search_results_renderer .primary_contents .section_list_renderer .contents; - let (items, ctoken) = map_section_list_items(section_list_items)?; - - let mut warnings = items.warnings; - let (mut mapped, corrected_query) = map_search_items(items.c, lang); - warnings.append(&mut mapped.warnings); + let mut mapper = response::YouTubeListMapper::::new(lang); + mapper.map_response(items); Ok(MapResult { c: SearchResult { - items: Paginator::new(self.estimated_results, mapped.c, ctoken), - corrected_query, + items: Paginator::new(self.estimated_results, mapper.items, mapper.ctoken), + corrected_query: mapper.corrected_query, }, - warnings, + warnings: mapper.warnings, }) } } -impl MapResponse> for response::SearchCont { - fn map_response( - self, - _id: &str, - lang: Language, - _deobf: Option<&Deobfuscator>, - ) -> Result>, ExtractionError> { - let mut commands = self.on_response_received_commands; - let cont_command = some_or_bail!( - commands.try_swap_remove(0), - Err(ExtractionError::InvalidData( - "no item section renderer".into() - )) - ); - - let (items, ctoken) = map_section_list_items( - cont_command - .append_continuation_items_action - .continuation_items, - )?; - - let mut warnings = items.warnings; - let (mut mapped, _) = map_search_items(items.c, lang); - warnings.append(&mut mapped.warnings); - - Ok(MapResult { - c: Paginator::new(self.estimated_results, mapped.c, ctoken), - warnings, - }) - } -} - -fn map_section_list_items( - section_list_items: Vec, -) -> Result<(MapResult>, Option), ExtractionError> { - let mut items = None; - let mut ctoken = None; - section_list_items.into_iter().for_each(|item| match item { - response::search::SectionListItem::ItemSectionRenderer { contents } => { - items = Some(contents); - } - response::search::SectionListItem::ContinuationItemRenderer { - continuation_endpoint, - } => { - ctoken = Some(continuation_endpoint.continuation_command.token); - } - }); - - let items = some_or_bail!( - items, - Err(ExtractionError::InvalidData( - "no item section renderer".into() - )) - ); - - Ok((items, ctoken)) -} - -fn map_search_items( - items: Vec, - lang: Language, -) -> (MapResult>, Option) { - let mut warnings = Vec::new(); - - let mut c_query = None; - let mapped_items = items - .into_iter() - .filter_map(|item| match item { - response::search::SearchItem::VideoRenderer(video) => { - match SearchVideo::from_w_lang(video, lang) { - Ok(video) => Some(SearchItem::Video(video)), - Err(e) => { - warnings.push(e.to_string()); - None - } - } - } - response::search::SearchItem::PlaylistRenderer(playlist) => { - Some(SearchItem::Playlist(playlist.into())) - } - response::search::SearchItem::ChannelRenderer(channel) => { - Some(SearchItem::Channel(channel.into())) - } - response::search::SearchItem::ShowingResultsForRenderer { corrected_query } => { - c_query = Some(corrected_query); - None - } - response::search::SearchItem::None => None, - }) - .collect(); - ( - MapResult { - c: mapped_items, - warnings, - }, - c_query, - ) -} - #[cfg(test)] mod tests { use std::{fs::File, io::BufReader, path::Path}; use crate::{ client::{response, MapResponse}, - model::{Paginator, SearchItem, SearchResult}, + model::SearchResult, param::Language, serializer::MapResult, }; @@ -271,26 +148,4 @@ mod tests { ".items.items.*.publish_date" => "[date]", }); } - - #[test] - fn t_map_search_cont() { - let filename = format!("testfiles/search/cont.json"); - let json_path = Path::new(&filename); - let json_file = File::open(json_path).unwrap(); - - let search_cont: response::SearchCont = - serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = - search_cont.map_response("", Language::En, None).unwrap(); - - assert!( - map_res.warnings.is_empty(), - "deserialization/mapping warnings: {:?}", - map_res.warnings - ); - - insta::assert_ron_snapshot!("map_search_cont", map_res.c, { - ".items.*.publish_date" => "[date]", - }); - } } diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_info.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_info.snap index 22c25fe..6d71013 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_info.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_info.snap @@ -23,6 +23,7 @@ Channel( height: 176, ), ], + verification: Verified, description: "NO SCRIPT, NO FEAR, ALL OPINION\nAn off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers\nHosted by Dave Jones from Sydney Australia\n\nDONATIONS:\nBitcoin: 3KqyH1U3qrMPnkLufM2oHDU7YB4zVZeFyZ\nEthereum: 0x99ccc4d2654ba40744a1f678d9868ecb15e91206\nPayPal: david@alternatezone.com\n\nPatreon: https://www.patreon.com/eevblog\n\nEEVblog2: http://www.youtube.com/EEVblog2\nEEVdiscover: https://www.youtube.com/channel/UCkGvUEt8iQLmq3aJIMjT2qQ\n\nEMAIL:\nAdvertising/Commercial: eevblog+business@gmail.com\nFan mail: eevblog+fan@gmail.com\nHate Mail: eevblog+hate@gmail.com\n\nI DON\'T DO PAID VIDEO SPONSORSHIPS, DON\'T ASK!\n\nPLEASE:\nDo NOT ask for personal advice on something, post it in the EEVblog forum.\nI read ALL email, but please don\'t be offended if I don\'t have time to reply, I get a LOT of email.\n\nMailbag\nPO Box 7949\nBaulkham Hills NSW 2153\nAUSTRALIA", tags: [ "electronics", diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists.snap index f4310b2..0221238 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists.snap @@ -23,6 +23,7 @@ Channel( height: 176, ), ], + verification: Verified, description: "NO SCRIPT, NO FEAR, ALL OPINION\nAn off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers\nHosted by Dave Jones from Sydney Australia\n\nDONATIONS:\nBitcoin: 3KqyH1U3qrMPnkLufM2oHDU7YB4zVZeFyZ\nEthereum: 0x99ccc4d2654ba40744a1f678d9868ecb15e91206\nPayPal: david@alternatezone.com\n\nPatreon: https://www.patreon.com/eevblog\n\nEEVblog2: http://www.youtube.com/EEVblog2\nEEVdiscover: https://www.youtube.com/channel/UCkGvUEt8iQLmq3aJIMjT2qQ\n\nEMAIL:\nAdvertising/Commercial: eevblog+business@gmail.com\nFan mail: eevblog+fan@gmail.com\nHate Mail: eevblog+hate@gmail.com\n\nI DON\'T DO PAID VIDEO SPONSORSHIPS, DON\'T ASK!\n\nPLEASE:\nDo NOT ask for personal advice on something, post it in the EEVblog forum.\nI read ALL email, but please don\'t be offended if I don\'t have time to reply, I get a LOT of email.\n\nMailbag\nPO Box 7949\nBaulkham Hills NSW 2153\nAUSTRALIA", tags: [ "electronics", @@ -144,7 +145,7 @@ Channel( content: Paginator( count: None, items: [ - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHtOV3AEwhuea4TnviddKfAj", name: "MacGyver Project", thumbnail: [ @@ -154,9 +155,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(2), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHuvHE5GQrQJxWXHdmW2l5IF", name: "Calculators", thumbnail: [ @@ -166,9 +168,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(1), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHs6wRwVSaErU0BEnLiHfnKJ", name: "BM235", thumbnail: [ @@ -178,9 +181,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(9), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHu4k0ZkKFLsysSB5iava6Qu", name: "Vibration Measurement", thumbnail: [ @@ -190,9 +194,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(2), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHtdQF-m5UFZ5GEjABadI3kI", name: "Component Selection", thumbnail: [ @@ -202,9 +207,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(4), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHtlndPUSOPgsujUdq1c5Mr9", name: "Solar Roadways", thumbnail: [ @@ -214,9 +220,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(18), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvD6M_7WeN071OVsZFE0_q-", name: "Electronics Tutorials - AC Theory Series", thumbnail: [ @@ -226,9 +233,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(3), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHtVLq2MDPIz82BWMIZcuwhK", name: "Electronics Tutorial - DC Fundamentals", thumbnail: [ @@ -238,9 +246,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(8), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvIDfW3x2p4BY6l4RYgfBJE", name: "Oscilloscope Probing", thumbnail: [ @@ -250,9 +259,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(13), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHu6Jjb8U82eKQfvKhJVl0Bu", name: "Thermal Design", thumbnail: [ @@ -262,9 +272,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(9), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHs-X2Awg33PCBNrP2BGFVhC", name: "Electric Cars", thumbnail: [ @@ -274,9 +285,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(7), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHuLODLTeq3PM-OJRP2nzNUa", name: "Designing a better uCurrent", thumbnail: [ @@ -286,9 +298,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(3), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHtvTKP4RTNW1-08Kmzy1pvA", name: "EMC Compliance & Measurement", thumbnail: [ @@ -298,9 +311,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(8), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHuUTpCrTVX7BdU68l2aVqMv", name: "Power Counter Display Project", thumbnail: [ @@ -310,9 +324,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(2), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvm120Tq40nKrM5SUBlolN3", name: "Live - Ask Dave", thumbnail: [ @@ -322,9 +337,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(3), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHsiF93KOLoF1KAHArmIW9lC", name: "Padauk Microcontroller", thumbnail: [ @@ -334,9 +350,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(10), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvxTzBLwUFw4My4rtrNFzED", name: "Other Debunking Videos", thumbnail: [ @@ -346,9 +363,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(1), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHt2pJ7X5tumuM4Wa3r1OC7Q", name: "Audio & Speakers", thumbnail: [ @@ -358,9 +376,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(9), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHtX7OearWdmqGzqiu4DHKWi", name: "Cameras", thumbnail: [ @@ -370,9 +389,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(16), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHu-TaNRp27_PiXjBG5wY9Gv", name: "Cryptocurrency", thumbnail: [ @@ -382,9 +402,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(7), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvmK-VGcZ33ZuATmcNB8tvH", name: "LCD Tutorial", thumbnail: [ @@ -394,9 +415,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(6), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvbV8x_bWQBKEg4IshWjG3U", name: "Guest Videos", thumbnail: [ @@ -406,9 +428,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(12), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHs5tuhiqdxQeegsLDP7TM8V", name: "Software Development", thumbnail: [ @@ -418,9 +441,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(1), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHu328BlpUOUDsv9Kf1Ri8Tg", name: "John Kenny - Keysight", thumbnail: [ @@ -430,9 +454,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(5), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvj_E5KUBluJJupXmideiZk", name: "General Tech Information", thumbnail: [ @@ -442,9 +467,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(2), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHsWHPg1KlSd8agKbrcn3Dwn", name: "Microscope", thumbnail: [ @@ -454,9 +480,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(4), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHuQb5djEVLzwBSTT27p2dXB", name: "The Signal Path", thumbnail: [ @@ -466,9 +493,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(1), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHstMIbtLqlEiidVjj8ob0xp", name: "Thermal Imaging", thumbnail: [ @@ -478,9 +506,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(2), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHugqRHdt46SN9Bmoh-D5Gp2", name: "EEVacademy", thumbnail: [ @@ -490,9 +519,10 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(9), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHtqqYM7ON99sbyiokMKrwwI", name: "Brainstorming", thumbnail: [ @@ -502,9 +532,11 @@ Channel( height: 270, ), ], + channel: None, video_count: Some(1), ), ], ctoken: Some("4qmFsgLCARIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGnRFZ2x3YkdGNWJHbHpkSE1ZQXlBQk1BRTRBZW9EUEVOblRrUlJhbEZUU2tKSmFWVkZlREpVTW5oVVdsZG9UMlJJVmtsa1NFWjRWMVV3TTFRd05EVlBXRTVwWlZkc2RtRXdNVXhqYm1RelUxTm5PQSUzRCUzRJoCL2Jyb3dzZS1mZWVkVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RcGxheWxpc3RzMTA0"), + endpoint: browse, ), ) diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20221011_richgrid.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20221011_richgrid.snap index c007c65..afe93e4 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20221011_richgrid.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20221011_richgrid.snap @@ -23,6 +23,7 @@ Channel( height: 176, ), ], + verification: Verified, description: "Hi, I’m Tina, aka Doobydobap!\n\nFood is the medium I use to tell stories and connect with people who share the same passion as I do. Whether it’s because you’re hungry at midnight or trying to learn how to cook, I hope you enjoy watching my content and recipes. Don\'t yuck my yum!\n\nwww.doobydobap.com\n", tags: [], vanity_url: Some("https://www.youtube.com/c/Doobydobap"), @@ -115,7 +116,7 @@ Channel( content: Paginator( count: None, items: [ - ChannelVideo( + VideoItem( id: "EIcmfSzeaKk", title: "our new normal", length: Some(1106), @@ -141,14 +142,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("9 hours ago"), - view_count: 142423, + view_count: Some(142423), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("I\'ve been really enjoying cooking more lately (′ꈍωꈍ‵)\nWas so cool to see my makgeolli fermenting, I can\'t wait to show you the progress update in my next vlog. \n\nThank you again doobies!..."), ), - ChannelVideo( + VideoItem( id: "9NuhKCv3crg", title: "the end.", length: Some(982), @@ -174,14 +177,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("7 days ago"), - view_count: 989763, + view_count: Some(989763), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("or the start of something new~~~~~\n\nThank you for your patience on the vlog, it took some time to adjust to my new normal. Excited for change and I\'ll always try my best to make the best content..."), ), - ChannelVideo( + VideoItem( id: "38Gd6TdmNVs", title: "KOREAN BARBECUE l doob gourmand ep.3", length: Some(525), @@ -207,14 +212,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 355470, + view_count: Some(355470), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("I haven\'t done a doob gourmand series in so so long! I hope you enjoyed it, let me know what kind of food you\'re interested in seeing in these series! :)\n\nLove you doobies!\n\nInstagram @doobydobap..."), ), - ChannelVideo( + VideoItem( id: "l9TiwunjzgA", title: "long distance", length: Some(1043), @@ -240,14 +247,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 697188, + view_count: Some(697188), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("exciting changes are about to come! \ndoob gourmand kbbq coming out on Thursday this week :)\n\nInstagram @doobydobap \nJoin my discord! 😈\nhttps://discord.gg/doobyverse\nwww.doobydobap.com for..."), ), - ChannelVideo( + VideoItem( id: "pRVSdUxdsVw", title: "Repairing...", length: Some(965), @@ -273,14 +282,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("4 weeks ago"), - view_count: 529586, + view_count: Some(529586), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("The word repair stems from the Latin word reparare, from re- ‘back’ and parare ‘make ready.\' And I feel that\'s exactly how I feel about this week\'s vlog-- I feel like I\'m repairing my..."), ), - ChannelVideo( + VideoItem( id: "2FJVhdOO0F0", title: "a health scare", length: Some(1238), @@ -306,14 +317,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 1066729, + view_count: Some(1066729), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("https://www.nationalbreastcancer.org/about-breast-cancer/\nI\'m really thankful that my results came out okay. This really was one of the worst / scariest weeks of my life, but an important one..."), ), - ChannelVideo( + VideoItem( id: "CutR_1SDDzY", title: "feels good to be back", length: Some(1159), @@ -339,14 +352,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 525663, + view_count: Some(525663), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("I missed you guys. Happy to see you guys back. \nI\'ve really been working on my mental health, educating myself with different food cultures, and focusing on being happy the last month. \nThank..."), ), - ChannelVideo( + VideoItem( id: "KUz7oArksR4", title: "running away", length: Some(1023), @@ -372,14 +387,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 717806, + view_count: Some(717806), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("for now... more adventures to come! \n\n\n\n\nMusic by Mark Generous - A Summer Day - https://thmatc.co/?l=CF6C5FFF\nInstagram @doobydobap \nJoin my discord! 😈\nhttps://discord.gg/doobyverse\nwww.doobyd..."), ), - ChannelVideo( + VideoItem( id: "sPb2gyN-hnE", title: "worth fighting for", length: Some(1232), @@ -405,14 +422,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 624673, + view_count: Some(624673), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Please be respectful in the comments section! \nI will not be tolerating any hateful/derogatory speech 👹👹👹 *barking noise*\n\nMusic \nMarie - Howard Harper-Barnes\nMusic by Monét Ngo -..."), ), - ChannelVideo( + VideoItem( id: "PXsK9-CFoH4", title: "waiting...", length: Some(1455), @@ -438,14 +457,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 924135, + view_count: Some(924135), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("👀☂\u{fe0f}🕴\u{fe0f}\ntuna kimchi jook \n2 cups cooked rice \n3 cups water \n1 cup kimchi \n320g canned tuna \n1 tbsp perilla seed oil \n1 onion\n1 tbsp gochujang\n1 tbsp soy sauce \n½ tsp salt (to taste)..."), ), - ChannelVideo( + VideoItem( id: "r2ye6zW0nbM", title: "a wedding", length: Some(1207), @@ -471,14 +492,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 1053353, + view_count: Some(1053353), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Ginger Pork Recipe!\nhttps://doobydobap.com/recipe/ginger-pork-shogayaki\n-\nInstagram @doobydobap \nJoin my discord! 😈\nhttps://discord.gg/doobyverse\nwww.doobydobap.com for recipes & stories..."), ), - ChannelVideo( + VideoItem( id: "rriwHj8U664", title: "my seoul apartment tour", length: Some(721), @@ -504,14 +527,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 697242, + view_count: Some(697242), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Korea has an interesting rent structure called junseh where you pay a higher security deposit in turn for lower rent! And before anyone starts accusing me, no, it\'s all with my own money!!!..."), ), - ChannelVideo( + VideoItem( id: "FKJtrUeol3o", title: "with quantity comes quality", length: Some(1140), @@ -537,14 +562,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 1086097, + view_count: Some(1086097), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("A busy, but calm week for me here in Seoul living alone. \nPlanning on exploring more parts of Korea, please let me know in the comments what you\'d wanna see!\n\nFried Eggplants with Doubanjiang..."), ), - ChannelVideo( + VideoItem( id: "zYHB38UlzE0", title: "Q&A l relationships, burnout, privilege, college advice, living alone, and life after youtube?", length: Some(775), @@ -570,14 +597,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 528979, + view_count: Some(528979), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("So many questions I wasn\'t able to answer, but if you comment below I\'ll try and answer every single one of them!!!!\n\nA little bit of audio issues, it was my first time using this mic, \nsowwy..."), ), - ChannelVideo( + VideoItem( id: "hGbQ2WM9nOo", title: "Why does everything bad for you taste good ㅣ CHILI OIL RAMEN", length: Some(428), @@ -603,14 +632,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 1036890, + view_count: Some(1036890), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("https://partner.bokksu.com/doobydobap use code DOOBYDOBAP to get $15 off your first bokksu order! \n\nInstagram @doobydobap \nJoin my discord! 😈\nhttps://discord.gg/doobyverse\nwww.doobydobap.com..."), ), - ChannelVideo( + VideoItem( id: "PxGmP4v_A38", title: "Alone and Thriving l late night korean convenience store, muji kitchenware haul, spring cleaning!", length: Some(1437), @@ -636,14 +667,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 832542, + view_count: Some(832542), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("I could palpably feel how I\'m so much happier than before when I was reviewing my footage 🥺🥺🥺 \n\nAll the finalized recipes will be updated on my Instagram or my website! \n\nMusic\nMusic..."), ), - ChannelVideo( + VideoItem( id: "8t-WyYcpEDE", title: "What I hate most", length: Some(61), @@ -669,14 +702,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 1342882, + view_count: Some(1342882), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("#shorts #cooking \nhttps://doobydobap.com/recipe/ginger-pork-shogayaki\n\nInstagram @doobydobap \nJoin my discord! 😈\nhttps://discord.gg/doobyverse\nwww.doobydobap.com for recipes & stories"), ), - ChannelVideo( + VideoItem( id: "RroYpLxxNjY", title: "I\'m Back. ㅣ cooking korean food, eating alone, working out, and 2M!", length: Some(1313), @@ -702,14 +737,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 1076848, + view_count: Some(1076848), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Annyoung doobies! It has been a while since I\'ve sat down and spoken to you all. I\'m thrilled to be back, and I finally feel like I\'m in my element after a much-needed break. \n\nThank you so..."), ), - ChannelVideo( + VideoItem( id: "l47QuudsZ34", title: "We ate our way through Florence (ft. mamadooby)", length: Some(1109), @@ -735,14 +772,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("5 months ago"), - view_count: 562349, + view_count: Some(562349), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Annyoung doobies :)\nI\'m back after a hiatus, I\'ve been travelling and putting my mental health first so I don\'t burn out!!! Much needed break to be inspired & grow for more content to come!..."), ), - ChannelVideo( + VideoItem( id: "1VW7iXRIrc8", title: "Alone, in the City of Love", length: Some(1875), @@ -768,14 +807,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 531938, + view_count: Some(531938), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("I know it\'s a little long, but I hope you enjoyed this Paris vlog :}\n\nLocation📍\nUdon Restaurant: Sanukiya\n9 Rue d\'Argenteuil, Paris\nCoffee: Telescope Cafe\n5 Rue Villédo, 75001 Paris, France..."), ), - ChannelVideo( + VideoItem( id: "6c58-749p6Y", title: "Old Friends & New", length: Some(774), @@ -801,14 +842,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 426469, + view_count: Some(426469), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Realized I have a typo that says perogis instead of peroni oop \nBut for real, I\'m so thankful for Bobbi bc she was one of the few/ only people that welcomed me to a new school/country where..."), ), - ChannelVideo( + VideoItem( id: "Q2G53LuEUaU", title: "Where we stand", length: Some(858), @@ -834,14 +877,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 448915, + view_count: Some(448915), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Thank you to BetterHelp for sponsoring this video! \nGo to https://www.betterhelp.com/doobydobap to get 10% off your first month :)\n\nLocations 📍\nThis is Dover btw\nhttps://www.google.com/maps/plac..."), ), - ChannelVideo( + VideoItem( id: "8rAOeowNQrI", title: "That\'s so last year", length: Some(1286), @@ -867,14 +912,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 675443, + view_count: Some(675443), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Location 📍\nScience Museum\nhttps://goo.gl/maps/dPPSZwmSrMzhEh9Y7\nNatural History Museum \nhttps://goo.gl/maps/XSu2EZN9XP8rGVWg6\nJoy King Lau - Dim Sum \nhttps://goo.gl/maps/D3rgoN1raQocyQPM6..."), ), - ChannelVideo( + VideoItem( id: "0RGIdIKkbSI", title: "The Muffin Man", length: Some(1052), @@ -900,14 +947,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 426465, + view_count: Some(426465), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Use code DOOBYDOBAP16 for up to 16 FREE MEALS + 3 Surprise Gifts across 6 HelloFresh boxes plus free shipping at https://bit.ly/3Kiz0qb!\n\nMusic\nindolore - je rêve d\'é ( moow edit ) https://soundc..."), ), - ChannelVideo( + VideoItem( id: "NudTbo2CJMY", title: "Flying to London", length: Some(1078), @@ -933,14 +982,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("7 months ago"), - view_count: 1137831, + view_count: Some(1137831), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Tomato Beef Curry\n1 packet Japanese Curry Roux\n250g thinly sliced beef \n2 large onions\n2 tbsp butter\n2 tbsp neutral oil \n1 can whole tomatoes\n500mL water\n2 tbsp ketchup \n\n1. Melt 1 tbsp butter..."), ), - ChannelVideo( + VideoItem( id: "8mJk1ncGZig", title: "(not so) Teenage Angst", length: Some(1376), @@ -966,14 +1017,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("7 months ago"), - view_count: 612275, + view_count: Some(612275), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Again, I hope you guys know that my vlogs are a visual diary of what’s happening in my life and what I’m feeling that week. I’m not speaking for everyone, so take with a grain o’ salt!..."), ), - ChannelVideo( + VideoItem( id: "qvgCi2WpbfE", title: "can\'t smell :s", length: Some(875), @@ -999,14 +1052,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("7 months ago"), - view_count: 396397, + view_count: Some(396397), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Kimchi Jeon \nParmesan Kimchi Jeon or regular, both works\nIngredients\n* 1 cup kimchi + 2 tbsp juice\n* 1 tsp gochujang (optional for extra heat)\n* ⅓ cup parmesan, grated + extra parmesan for..."), ), - ChannelVideo( + VideoItem( id: "Sm4Yqtqr9f8", title: "I have covid", length: Some(814), @@ -1032,14 +1087,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("7 months ago"), - view_count: 599030, + view_count: Some(599030), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("I had a bit too much fun with the intro.\nI actually didn\'t realize I shot it in slow-mo. \nThank you all for the supportive messages, donno what I did to deserve you all. Eternally thankful...."), ), - ChannelVideo( + VideoItem( id: "ZRtf4ksF3qs", title: "Everything I ate in Busan & make up tutorial??", length: Some(1026), @@ -1065,14 +1122,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("7 months ago"), - view_count: 530192, + view_count: Some(530192), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("I\'m okay btw!! I got overwhelmed a bit this past weekend in Busan and was really... anxious the entire time I was on my trip :(\nI\'ll still be sharing where I went from last weekend soon as..."), ), - ChannelVideo( + VideoItem( id: "oG4Wth1oVBQ", title: "On the other side", length: Some(1592), @@ -1098,14 +1157,17 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("8 months ago"), - view_count: 567604, + view_count: Some(567604), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Gochujang Pasta Recipe Link\nhttps://doobydobap.com/recipe/gochujang-pasta-with-prawns\nI just didn\'t put any prawns bc I didn\'t have any!\n\nLocation\ndanil seoul \n66-33 Wangsimni-ro, Seongsu-dong..."), ), ], ctoken: Some("4qmFsgKhARIYVUNoOGdIZHR6TzJ0WGQ1OTNfYmpFcldnGoQBOGdaZ0dsNTZYQXBZQ2pCRlozTkpiRXRwYURZdFNGZG9ZbVZuUVZObmVVMUJSVFJJYTBsTVExQlFVbXR3YjBkRlMwUnBkVmRhU1VGV1FVRVNKRFl6TkRnd056Wm1MVEF3TURBdE1tRXhaUzA0TnpRNUxXUTBaalUwTjJZNE16a3pZeGdC"), + endpoint: browse, ), ) diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20221011_richgrid2.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20221011_richgrid2.snap index 64759ce..965052f 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20221011_richgrid2.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20221011_richgrid2.snap @@ -23,6 +23,7 @@ Channel( height: 176, ), ], + verification: Verified, description: "NO SCRIPT, NO FEAR, ALL OPINION\nAn off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers\nHosted by Dave Jones from Sydney Australia\n\nDONATIONS:\nBitcoin: 3KqyH1U3qrMPnkLufM2oHDU7YB4zVZeFyZ\nEthereum: 0x99ccc4d2654ba40744a1f678d9868ecb15e91206\nPayPal: david@alternatezone.com\n\nPatreon: https://www.patreon.com/eevblog\n\nEEVblog2: http://www.youtube.com/EEVblog2\nEEVdiscover: https://www.youtube.com/channel/UCkGvUEt8iQLmq3aJIMjT2qQ\n\nEMAIL:\nAdvertising/Commercial: eevblog+business@gmail.com\nFan mail: eevblog+fan@gmail.com\nHate Mail: eevblog+hate@gmail.com\n\nI DON\'T DO PAID VIDEO SPONSORSHIPS, DON\'T ASK!\n\nPLEASE:\nDo NOT ask for personal advice on something, post it in the EEVblog forum.\nI read ALL email, but please don\'t be offended if I don\'t have time to reply, I get a LOT of email.\n\nMailbag\nPO Box 7949\nBaulkham Hills NSW 2153\nAUSTRALIA", tags: [ "electronics", @@ -144,7 +145,7 @@ Channel( content: Paginator( count: None, items: [ - ChannelVideo( + VideoItem( id: "4EcQYK_no5M", title: "EEVblog 1506 - History of Electricity with Kathy Loves Physics", length: Some(6143), @@ -170,14 +171,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 8813, + view_count: Some(8813), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Talking about the history of electricity and physics with Kathy Joseph from Kathey Loves Physics, and her new book:\nThe Lightning Tamers: True Stories of the Dreamers and Schemers Who Harnessed..."), ), - ChannelVideo( + VideoItem( id: "zEzjVUzNAFA", title: "EEVblog 1505 - 120W Home Phantom Power? Audit Time!", length: Some(1464), @@ -203,14 +206,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("6 days ago"), - view_count: 48599, + view_count: Some(48599), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("My home takes 120W phantom standby power. Let\'s do a complete audit and see what is consuming the most power, and how it can be reduced.\n\nHow bad product design kills the environment: https://www.y..."), ), - ChannelVideo( + VideoItem( id: "YIbQ3nudCA0", title: "EEVblog 1504 - The COOL thing you MISSED at Tesla AI Day 2022", length: Some(1021), @@ -236,14 +241,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("10 days ago"), - view_count: 74126, + view_count: Some(74126), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("A very cool bit of electronics failure mode analysis that you missed at the 2022 Tesla AI Day presentation. And it\'s got nothing to do with the Optimus Tesla Bot!\n\nA look at how ceramic capacitor..."), ), - ChannelVideo( + VideoItem( id: "W1Jl0rMRGSg", title: "EEVblog 1503 - Rigol HDO4000 12bit Oscilloscope TEARDOWN", length: Some(1798), @@ -269,14 +276,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("11 days ago"), - view_count: 36129, + view_count: Some(36129), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Teardown of the new Rigol HDO4000 12bit ultra low noise oscilloscope\n\nPSU teardown: https://www.youtube.com/watch?v=muMjiao5i0k\n\nForum: https://www.eevblog.com/forum/testgear/rigol-hdo1000-and-hdo4..."), ), - ChannelVideo( + VideoItem( id: "YFKu_emNzpk", title: "EEVblog 1502 - Is Home Battery Storage Financially Viable?", length: Some(1199), @@ -302,14 +311,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 87357, + view_count: Some(87357), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Running through the numbers to see if home battery storage is viable on my home. \nAnd comparing Tesla Powerwall, Enphase IQ Battery, BYD LVS, and Greenbank battery pricing.\n\nAll my solar videos:..."), ), - ChannelVideo( + VideoItem( id: "gremHHvqYTE", title: "EEVblog 1501 - Rigol HDO4000 Low Noise 12bit Oscilloscope Unboxing & First Impression", length: Some(1794), @@ -335,14 +346,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 48259, + view_count: Some(48259), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Rigol\'s new HDO4000 Series ultra low noise 12bit oscilloscope with Centaur chipset.\nUnboxing, first impression, and noise measurements.\n\nAC RMS noise measurement: https://www.youtube.com/watch?v=G8..."), ), - ChannelVideo( + VideoItem( id: "WHO8NBfpaO0", title: "eevBLAB 102 - Last Mile Autonomous Robot Deliveries WILL FAIL", length: Some(742), @@ -368,14 +381,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 27509, + view_count: Some(27509), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Four reasons why autonomous pizza delivery robots will FAIL.\nAnd nope, they won\'t save the environment either.\nBut maybe I\'m wrong?\nMagna are trialing a pizza delivery robot in Manhatten.\n..."), ), - ChannelVideo( + VideoItem( id: "W1Q8CxL95_Y", title: "EEVblog 1500 - Automatic Transfer Switch REVERSE ENGINEERED", length: Some(1770), @@ -401,14 +416,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 57925, + view_count: Some(57925), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Automatic AC transfer switches are pretty cool devices. A look at what they do, a practical demo, teardown, and then reverse engineering to explain how it does it with a direct one-to-one schematic..."), ), - ChannelVideo( + VideoItem( id: "lagxSrPeoYg", title: "EEVblog 1499 - EcoFlow Delta Pro 3.6kWh Portable Battery TEARDOWN!", length: Some(2334), @@ -434,14 +451,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 77907, + view_count: Some(77907), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Teardown of the EcoFlow Delta Pro 3.6kWh portable/home LiFePO4 battery solar inverter/generator.\nBack in the old EEVblog garage!\n\nTeardown photos: https://www.eevblog.com/2022/09/08/eevblog-1499-ec..."), ), - ChannelVideo( + VideoItem( id: "qTctWW9_FmE", title: "EEVblog 1498 - TransPod Fluxjet Hyperloop $550M Boondoggle!", length: Some(2399), @@ -467,14 +486,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 63421, + view_count: Some(63421), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("The Transpod FluxJet is Hyperloop based on the \"New physics\" of \"Veillance Flux\"!\nAnd plasma arc power transfer!\n$550M to create a reduced pressure Fluxjet link from Calgary to Edmonton in..."), ), - ChannelVideo( + VideoItem( id: "3t9G80wk0pk", title: "eevBLAB 101 - Why Are Tektronix Oscilloscopes So Expensive?", length: Some(1423), @@ -500,14 +521,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 73052, + view_count: Some(73052), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Answering the question of why Tektronix and the other top tier manufactuer\'s oscilloscopes are so expensive? Why don\'t they just make a low cost scope?\nHere is a list of 16 reasons, can you..."), ), - ChannelVideo( + VideoItem( id: "7dze5CnZnmk", title: "EEVblog 1497 - RIP Fluke. Thanks Energizer. NOT.", length: Some(1168), @@ -533,14 +556,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 93529, + view_count: Some(93529), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("RIP this Fluke 3000 wireless multimeter. Thanks Energizer for the alkaline battery leakage!\n\nPART 2 Repair: https://www.youtube.com/watch?v=qmcSEJehqZM\n\nEnergizer battery leakage in liquid..."), ), - ChannelVideo( + VideoItem( id: "6XnrZpPYgBg", title: "EEVblog 1496 - Winning Mailbag", length: Some(3139), @@ -566,14 +591,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 41569, + view_count: Some(41569), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Meet 13yo Josh, the winner of the Jaycar $5 scope, and designer of Framework laptop boards!\nhttps://lectronz.com/products/uart-expansion-card\nHis Patreon: https://www.patreon.com/i2clabs\nMore..."), ), - ChannelVideo( + VideoItem( id: "Psp3ltpFvws", title: "eevBLAB 100 - Reuters Attacks Odysee - LOL", length: Some(855), @@ -599,14 +626,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 22842, + view_count: Some(22842), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Reuters attacks Odysee for hosting conspiracy and violent content and gets OWNED, LOL.\nLet\'s actually take look to see if that\'s the case. SPOILER: It\'s not, Odysee is fantastic.\nWatch an an..."), ), - ChannelVideo( + VideoItem( id: "taVYTYz5vLE", title: "EEVblog 1495 - Quaze Wireless Power (AGAIN!) but for GAMING!", length: Some(2592), @@ -632,14 +661,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 41621, + view_count: Some(41621), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Yes, wireless power is BACK! And this time they are targetting gaming rigs.\nQuaze want to power gaming rigs up to 500W with 15MHz resonant RF wireless desktop power. Let\'s take a look! How..."), ), - ChannelVideo( + VideoItem( id: "Y6cZrieFw-k", title: "EEVblog 1494 - FIVE Ways to Open a CHEAP SAFE!", length: Some(1194), @@ -665,14 +696,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 77542, + view_count: Some(77542), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("FIVE different easy methods to crack into a cheap Sandleford safe found in the dumpster, WITHOUT using physical force. Including a bonus 6th method that doesn\'t work on this one.\nDon\'t buy..."), ), - ChannelVideo( + VideoItem( id: "Kr2XyhpUdUI", title: "EEVblog 1493 - MacGyver Project - Part 2", length: Some(1785), @@ -698,14 +731,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 34947, + view_count: Some(34947), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Powering up the Banshee ultrasonic leak detector LED display to see how the display is multiplexed turned out to be very interesting!\nWith special guest debugger, Sagan, who invents a new industry..."), ), - ChannelVideo( + VideoItem( id: "rxGafdgkal8", title: "EEVblog 1492 - $5 Oscilloscope Repaired! + Oz GIVEAWAY", length: Some(1163), @@ -731,14 +766,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 45618, + view_count: Some(45618), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("The $5 Hantek oscilloscope is repaired, and I\'m giving it away to a youngster in Australia.\n\nIf you want the scope, enter here:\nhttps://www.eevblog.com/forum/contests/giveaway-(oz-only)-hantek-osci..."), ), - ChannelVideo( + VideoItem( id: "4yosozyeIP4", title: "EEVblog 1491 - The MacGyver Project - Part 1", length: Some(1706), @@ -764,14 +801,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 34868, + view_count: Some(34868), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Part 1 reverse engineering the interface on the LED display of the Banshee Ultrasonic gas leak detector to make a MacGyver type countdown timer THING (for demonetisation purposes).\nThis will..."), ), - ChannelVideo( + VideoItem( id: "06JtC2DC_dQ", title: "EEVblog 1490 - Insane Jaycar Dumpster Sale! 2022", length: Some(1700), @@ -797,14 +836,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 64336, + view_count: Some(64336), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Insane Jaycar dumpster relocation sale!\n\nSupport the EEVblog on:\nPatreon: http://www.patreon.com/eevblog\nOdysee: https://odysee.com/@eevblog:7\nWeb Site: http://www.eevblog.com\nEEVblog2: http://www...."), ), - ChannelVideo( + VideoItem( id: "piquT76w9TI", title: "EEVblog 1489 - Mystery Teardown!", length: Some(1466), @@ -830,14 +871,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 150958, + view_count: Some(150958), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Teardown of a bizarre looking Banshee 343 Ultrasonic Gas Leak Detector\n\nThumbs up this video and pinned comment if you want to see a countdown timer refit project!\n\nDatasheet: https://www.instrumar..."), ), - ChannelVideo( + VideoItem( id: "pKuUKT-zU-g", title: "EEVblog 1488 - Tilt Five Augmented Reality AR Glasses - First Reaction!", length: Some(2152), @@ -863,14 +906,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 30903, + view_count: Some(30903), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Dave tries Jeri Ellsworth\'s Tilt Five augmented reality AR glasses for the first time!\nUnboxing, first reaction, and a bit of a first user review.\n\n00:00 - Tilt Five AR Kickstarter Glasses..."), ), - ChannelVideo( + VideoItem( id: "_R4wQQNSO6k", title: "EEVblog 1487 - Do Solar Micro Inverters Take Power at Night?", length: Some(2399), @@ -896,14 +941,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 48669, + view_count: Some(48669), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("How much power do Enphase and other solar micro inverters draw at night time when switched off? It\'s actually a very interesting question involving real and apparent/reactive power, the system..."), ), - ChannelVideo( + VideoItem( id: "ikp5BorIo_M", title: "EEVblog 1486 - What you DIDN\'T KNOW About Film Capacitor FAILURES!", length: Some(1792), @@ -929,14 +976,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 83505, + view_count: Some(83505), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("You might think you know how film capacitors fail and degrade in capacitance over time - self-healing due to surges, right? WRONG!\nCapacitor expert and AVX Fellow Ron Demcko confirms what\'s..."), ), - ChannelVideo( + VideoItem( id: "7O-QckjCXNo", title: "eevBLAB 99 - AI SPAM BOT Youtube Space/Science/Tech Channels? - WTF", length: Some(592), @@ -962,14 +1011,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 42843, + view_count: Some(42843), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("WTF are these random mash content spam space/science/tech Youtube channels? Are they auto-generated AI bots?\nThese channels get over 1M views a day!\nhttps://www.youtube.com/channel/UC2jAc3ifBNVT03i..."), ), - ChannelVideo( + VideoItem( id: "VutdTxF4E-0", title: "RIP The Old Garage Lab", length: Some(115), @@ -995,14 +1046,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 26036, + view_count: Some(26036), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("RIP The old EEVblog garage lab.\nA slightly extended tour of the old lab: https://odysee.com/@eevblog:7/2021-06-11-Old-Lab-Tour:2\nSecret feature of the EEVblog lab bench: https://www.youtube.com/wat..."), ), - ChannelVideo( + VideoItem( id: "o7xfGuRaq94", title: "EEVblog 1485 - PedalCell CadenceX Bike Generator LOL FAIL!", length: Some(1026), @@ -1028,14 +1081,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 63729, + view_count: Some(63729), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("The failed PedalCell CadenceX Bike Generator from the previous mailbag video is tested, torn down, analysed, hilrariously laughed at, and dodgily repaired.\nhttps://pedalcell.com/\n\n00:00 - Failed..."), ), - ChannelVideo( + VideoItem( id: "3WSIfHOv3fc", title: "EEVblog 1484 - Kaba Mas X-09 High Security Electronic Lock Teardown", length: Some(1106), @@ -1061,14 +1116,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 22920, + view_count: Some(22920), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Extended version of the Mailbag 1483 teardown of the Kaba Mas X-09 High Security Electronic Lock Teardown\n\nSupport the EEVblog on:\nPatreon: http://www.patreon.com/eevblog\nOdysee: https://odysee.com..."), ), - ChannelVideo( + VideoItem( id: "8yXZJZCKImI", title: "EEVblog 1483 - Holy Mailbag Bomb Batman!", length: Some(3373), @@ -1094,14 +1151,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 66042, + view_count: Some(66042), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("Bumper Mailbag!\n\nForum: https://www.eevblog.com/forum/blog/eevblog-1483-holy-mailbag-bomb-batman/\n\nSPOILERS:\n00:00 - Contact Harald Covid Bluetooth Tracing \n04:24 - Kaba Mas X09 High Security..."), ), - ChannelVideo( + VideoItem( id: "vJ4pW6LKJWU", title: "EEVblog 1482 - Mains Capacitor Zener Regulator Circuit", length: Some(1132), @@ -1127,14 +1186,17 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 52065, + view_count: Some(52065), is_live: false, is_short: false, is_upcoming: false, + short_description: Some("A follow up to the previous video on repairing the heater.\nA viewer asked how the capacitor diode rectifier gave a 24V output. The key is in the zener regulator, so this vidoe looks at how..."), ), ], ctoken: Some("4qmFsgKhARIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGoQBOGdaZ0dsNTZYQXBZQ2pCRlozTkpOV054YjJ4eWNYSnBjeTA0UVZObmVVMUJSVFJJYTBsTVEwbEhjV3cxYjBkRlVHcHlYM2hTU1VGV1FVRVNKRFl6TkRZMVlqZzFMVEF3TURBdE1qTXlOaTA1WTJSbUxUTmpNamcyWkRReU1tWTNOaGdC"), + endpoint: browse, ), ) diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_base.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_base.snap index ffa8d43..25a9b7c 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_base.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_base.snap @@ -23,6 +23,7 @@ Channel( height: 176, ), ], + verification: Verified, description: "NO SCRIPT, NO FEAR, ALL OPINION\nAn off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers\nHosted by Dave Jones from Sydney Australia\n\nDONATIONS:\nBitcoin: 3KqyH1U3qrMPnkLufM2oHDU7YB4zVZeFyZ\nEthereum: 0x99ccc4d2654ba40744a1f678d9868ecb15e91206\nPayPal: david@alternatezone.com\n\nPatreon: https://www.patreon.com/eevblog\n\nEEVblog2: http://www.youtube.com/EEVblog2\nEEVdiscover: https://www.youtube.com/channel/UCkGvUEt8iQLmq3aJIMjT2qQ\n\nEMAIL:\nAdvertising/Commercial: eevblog+business@gmail.com\nFan mail: eevblog+fan@gmail.com\nHate Mail: eevblog+hate@gmail.com\n\nI DON\'T DO PAID VIDEO SPONSORSHIPS, DON\'T ASK!\n\nPLEASE:\nDo NOT ask for personal advice on something, post it in the EEVblog forum.\nI read ALL email, but please don\'t be offended if I don\'t have time to reply, I get a LOT of email.\n\nMailbag\nPO Box 7949\nBaulkham Hills NSW 2153\nAUSTRALIA", tags: [ "electronics", @@ -144,7 +145,7 @@ Channel( content: Paginator( count: None, items: [ - ChannelVideo( + VideoItem( id: "gremHHvqYTE", title: "EEVblog 1501 - Rigol HDO4000 Low Noise 12bit Oscilloscope Unboxing & First Impression", length: Some(1794), @@ -170,14 +171,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("20 hours ago"), - view_count: 19739, + view_count: Some(19739), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "WHO8NBfpaO0", title: "eevBLAB 102 - Last Mile Autonomous Robot Deliveries WILL FAIL", length: Some(742), @@ -203,14 +206,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("5 days ago"), - view_count: 24194, + view_count: Some(24194), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "W1Q8CxL95_Y", title: "EEVblog 1500 - Automatic Transfer Switch REVERSE ENGINEERED", length: Some(1770), @@ -236,14 +241,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("7 days ago"), - view_count: 51443, + view_count: Some(51443), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "lagxSrPeoYg", title: "EEVblog 1499 - EcoFlow Delta Pro 3.6kWh Portable Battery TEARDOWN!", length: Some(2334), @@ -269,14 +276,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("13 days ago"), - view_count: 72324, + view_count: Some(72324), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "qTctWW9_FmE", title: "EEVblog 1498 - TransPod Fluxjet Hyperloop $550M Boondoggle!", length: Some(2399), @@ -302,14 +311,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 57348, + view_count: Some(57348), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "3t9G80wk0pk", title: "eevBLAB 101 - Why Are Tektronix Oscilloscopes So Expensive?", length: Some(1423), @@ -335,14 +346,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 68645, + view_count: Some(68645), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "7dze5CnZnmk", title: "EEVblog 1497 - RIP Fluke. Thanks Energizer. NOT.", length: Some(1168), @@ -368,14 +381,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 91388, + view_count: Some(91388), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "6XnrZpPYgBg", title: "EEVblog 1496 - Winning Mailbag", length: Some(3139), @@ -401,14 +416,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 39993, + view_count: Some(39993), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "Psp3ltpFvws", title: "eevBLAB 100 - Reuters Attacks Odysee - LOL", length: Some(855), @@ -434,14 +451,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("4 weeks ago"), - view_count: 22512, + view_count: Some(22512), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "taVYTYz5vLE", title: "EEVblog 1495 - Quaze Wireless Power (AGAIN!) but for GAMING!", length: Some(2592), @@ -467,14 +486,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 40137, + view_count: Some(40137), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "Y6cZrieFw-k", title: "EEVblog 1494 - FIVE Ways to Open a CHEAP SAFE!", length: Some(1194), @@ -500,14 +521,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 74510, + view_count: Some(74510), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "Kr2XyhpUdUI", title: "EEVblog 1493 - MacGyver Project - Part 2", length: Some(1785), @@ -533,14 +556,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 34487, + view_count: Some(34487), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "rxGafdgkal8", title: "EEVblog 1492 - $5 Oscilloscope Repaired! + Oz GIVEAWAY", length: Some(1163), @@ -566,14 +591,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 44928, + view_count: Some(44928), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "4yosozyeIP4", title: "EEVblog 1491 - The MacGyver Project - Part 1", length: Some(1706), @@ -599,14 +626,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 34324, + view_count: Some(34324), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "06JtC2DC_dQ", title: "EEVblog 1490 - Insane Jaycar Dumpster Sale! 2022", length: Some(1700), @@ -632,14 +661,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 63763, + view_count: Some(63763), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "piquT76w9TI", title: "EEVblog 1489 - Mystery Teardown!", length: Some(1466), @@ -665,14 +696,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 149186, + view_count: Some(149186), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "pKuUKT-zU-g", title: "EEVblog 1488 - Tilt Five Augmented Reality AR Glasses - First Reaction!", length: Some(2152), @@ -698,14 +731,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 30130, + view_count: Some(30130), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "_R4wQQNSO6k", title: "EEVblog 1487 - Do Solar Micro Inverters Take Power at Night?", length: Some(2399), @@ -731,14 +766,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 48037, + view_count: Some(48037), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "ikp5BorIo_M", title: "EEVblog 1486 - What you DIDN\'T KNOW About Film Capacitor FAILURES!", length: Some(1792), @@ -764,14 +801,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 81958, + view_count: Some(81958), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "7O-QckjCXNo", title: "eevBLAB 99 - AI SPAM BOT Youtube Space/Science/Tech Channels? - WTF", length: Some(592), @@ -797,14 +836,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 42635, + view_count: Some(42635), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "VutdTxF4E-0", title: "RIP The Old Garage Lab", length: Some(115), @@ -830,14 +871,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 25860, + view_count: Some(25860), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "o7xfGuRaq94", title: "EEVblog 1485 - PedalCell CadenceX Bike Generator LOL FAIL!", length: Some(1026), @@ -863,14 +906,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 63035, + view_count: Some(63035), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "3WSIfHOv3fc", title: "EEVblog 1484 - Kaba Mas X-09 High Security Electronic Lock Teardown", length: Some(1106), @@ -896,14 +941,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 22731, + view_count: Some(22731), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "8yXZJZCKImI", title: "EEVblog 1483 - Holy Mailbag Bomb Batman!", length: Some(3373), @@ -929,14 +976,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 65765, + view_count: Some(65765), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "vJ4pW6LKJWU", title: "EEVblog 1482 - Mains Capacitor Zener Regulator Circuit", length: Some(1132), @@ -962,14 +1011,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 51555, + view_count: Some(51555), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "myqiqUE00fo", title: "EEVblog 1481 - Dodgy Dangerous Heater REPAIR", length: Some(1622), @@ -995,14 +1046,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 46638, + view_count: Some(46638), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "xIokNnjuam8", title: "EEVblog 1480 - Lightyear Zero Solar Powered Electric Car", length: Some(1196), @@ -1028,14 +1081,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 62921, + view_count: Some(62921), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "S3R4r2xvVYQ", title: "EEVblog 1479 - Is Your Calculator WRONG?", length: Some(1066), @@ -1061,14 +1116,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 66895, + view_count: Some(66895), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "RlwcdUnRw6w", title: "EEVblog 1478 - Waveform Update Rate Shootout - Tek 2 Series vs Others", length: Some(1348), @@ -1094,14 +1151,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 25894, + view_count: Some(25894), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "R2fw2g6WFbg", title: "EEVblog 1477 - TEARDOWN! - NEW Tektronix 2 Series Oscilloscope", length: Some(2718), @@ -1127,14 +1186,17 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 80173, + view_count: Some(80173), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), ], ctoken: Some("4qmFsgKrARIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGmBFZ1oyYVdSbGIzTVlBeUFBTUFFNEFlb0RNRVZuYjBsMVMzWlpPVXREWWw5TVRraExSRWwzUVZSblpWRm5kMGx3ZFVOMGJWRlpVVjlOUjA1d2QwcEpRVlpCUVElM0QlM0SaAixicm93c2UtZmVlZFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUXZpZGVvczEwMg%3D%3D"), + endpoint: browse, ), ) diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_empty.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_empty.snap index c6b91b5..80d53ad 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_empty.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_empty.snap @@ -23,6 +23,7 @@ Channel( height: 176, ), ], + verification: None, description: "", tags: [], vanity_url: None, @@ -33,5 +34,6 @@ Channel( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), ) diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_live.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_live.snap index 4efa2fd..fc8a24e 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_live.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_live.snap @@ -23,6 +23,7 @@ Channel( height: 176, ), ], + verification: Verified, description: "Welcome to The Good Life by Sensual Musique.\nThe second official channel of Sensual Musique. You can find a lot of music, live streams and some other things on this channel. Stay tuned :)\n\nSubmit your music here: submit.sensualmusiquenetwork@gmail.com", tags: [ "live radio", @@ -128,7 +129,7 @@ Channel( content: Paginator( count: Some(21), items: [ - ChannelVideo( + VideoItem( id: "csP93FGy0bs", title: "Chill Out Music Mix • 24/7 Live Radio | Relaxing Deep House, Chillout Lounge, Vocal & Instrumental", length: None, @@ -154,14 +155,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: None, - view_count: 94, - is_live: true, + view_count: Some(94), + is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "19hKXI1ENrY", title: "Deep House Radio | Relaxing & Chill House, Best Summer Mix 2022, Gym & Workout Music", length: None, @@ -187,14 +190,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: None, - view_count: 381, - is_live: true, + view_count: Some(381), + is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "CqMUC5eXX7c", title: "Back To School / Work 📚 Deep Focus Chillout Mix | The Good Life Radio #4", length: Some(4667), @@ -220,14 +225,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 241528, + view_count: Some(241528), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "A77SYlXKQEM", title: "Chillout Lounge 🏖\u{fe0f} Calm & Relaxing Background Music | The Good Life Radio #3", length: Some(1861), @@ -253,14 +260,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 118351, + view_count: Some(118351), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "72vkRHQfjbk", title: "Summer Lovers 💖 A Beautiful & Relaxing Chillout Deep House Mix | The Good Life Radio #2", length: Some(1832), @@ -286,14 +295,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 157971, + view_count: Some(157971), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "AMWMDhibROw", title: "Relaxing & Chill House 🌴 Summer \'21 Chill-Out Mix | The Good Life Radio #1", length: Some(1949), @@ -319,14 +330,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 82309, + view_count: Some(82309), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "9UMxZofMNbA", title: "Chillout Lounge - Calm & Relaxing Background Music | Study, Work, Sleep, Meditation, Chill", length: None, @@ -352,14 +365,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: None, - view_count: 2043, - is_live: true, + view_count: Some(2043), + is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "a2sEYVwBvX4", title: "Paratone - Heaven Is A Place On Earth (feat. kaii)", length: Some(161), @@ -385,14 +400,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 186475, + view_count: Some(186475), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "JAY-prtJnGY", title: "Joseph Feinstein - Where I Belong", length: Some(126), @@ -418,14 +435,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 66425, + view_count: Some(66425), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "DySa8OrQDi4", title: "LA Vision & Gigi D\'Agostino - Hollywood", length: Some(200), @@ -451,14 +470,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 1520020, + view_count: Some(1520020), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "NqzXULaB8MA", title: "LO - Home", length: Some(163), @@ -484,14 +505,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 37549, + view_count: Some(37549), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "UGzy6uhZkmw", title: "Luca - Sunset", length: Some(153), @@ -517,14 +540,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 33002, + view_count: Some(33002), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "iuvapHKpW8A", title: "nourii - Better Off (feat. BCS)", length: Some(126), @@ -550,14 +575,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 42036, + view_count: Some(42036), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "n_1Nwht-Gh4", title: "Deep House Covers & Remixes of Popular Songs 2020 🌴 Deep House, G-House, Chill-Out Music Playlist", length: Some(2940), @@ -583,14 +610,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 322935, + view_count: Some(322935), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "6TptI5BtP5U", title: "The Good Life Radio Mix #2 | Summer Memories ☀\u{fe0f} (Chill Music Playlist 2020)", length: Some(3448), @@ -616,14 +645,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 91980, + view_count: Some(91980), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "36YnV9STBqc", title: "The Good Life Radio\u{a0}•\u{a0}24/7 Live Radio | Best Relax House, Chillout, Study, Running, Gym, Happy Music", length: None, @@ -649,14 +680,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: None, - view_count: 4030, - is_live: true, + view_count: Some(4030), + is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "7x6ii2TcsPE", title: "The Good Life Radio Mix #1 | Relaxing & Chill House Music Playlist 2020", length: Some(2726), @@ -682,14 +715,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 288098, + view_count: Some(288098), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "mxV5MBZYYDE", title: "Christmas Music with Vocals 🎅 Best Relaxing Christmas Songs 2020", length: Some(5863), @@ -715,14 +750,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 50818, + view_count: Some(50818), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "hh2AOoPoAIo", title: "The Good Life Radio Mix 2019 🎅 Winter & Christmas Relax House Playlist [Best of Part 1]", length: Some(2530), @@ -748,14 +785,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 98431, + view_count: Some(98431), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "aFlvhtWsJ0g", title: "Chillout Playlist | Relaxing Summer Music Mix 2019 [Deep & Tropical House]", length: Some(2483), @@ -781,14 +820,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 572456, + view_count: Some(572456), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "cD-d7u6fnEI", title: "Chill House Playlist | Relaxing Summer Music 2019", length: Some(3165), @@ -814,14 +855,17 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 3114909, + view_count: Some(3114909), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), ], ctoken: None, + endpoint: browse, ), ) diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_music.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_music.snap index 18de4b8..806e3ee 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_music.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_music.snap @@ -23,6 +23,7 @@ Channel( height: 176, ), ], + verification: None, description: "", tags: [], vanity_url: None, @@ -116,5 +117,6 @@ Channel( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), ) diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_shorts.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_shorts.snap index 9b501b5..5bfbb39 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_shorts.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_shorts.snap @@ -23,6 +23,7 @@ Channel( height: 176, ), ], + verification: Verified, description: "Hi, I’m Tina, aka Doobydobap!\n\nFood is the medium I use to tell stories and connect with people who share the same passion as I do. Whether it’s because you’re hungry at midnight or trying to learn how to cook, I hope you enjoy watching my content and recipes. Don\'t yuck my yum!\n\nwww.doobydobap.com\n", tags: [], vanity_url: Some("https://www.youtube.com/c/Doobydobap"), @@ -115,7 +116,7 @@ Channel( content: Paginator( count: None, items: [ - ChannelVideo( + VideoItem( id: "JBUZE0mIlg8", title: "small but sure joy", length: None, @@ -126,14 +127,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 443549, + view_count: Some(443549), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "SRrvxFc2b2c", title: "i don\'t believe in long distance relationships", length: None, @@ -144,14 +147,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 1154962, + view_count: Some(1154962), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "l9TiwunjzgA", title: "long distance", length: Some(1043), @@ -177,14 +182,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 days ago"), - view_count: 477460, + view_count: Some(477460), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "cNx0ql9gnf4", title: "come over :)", length: None, @@ -195,14 +202,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("6 days ago"), - view_count: 1388173, + view_count: Some(1388173), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "fGQUWI4o__A", title: "Baskin Robbins in South Korea", length: None, @@ -213,14 +222,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("7 days ago"), - view_count: 1738301, + view_count: Some(1738301), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "Q73VTjdqVA8", title: "dry hot pot", length: None, @@ -231,14 +242,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("9 days ago"), - view_count: 1316594, + view_count: Some(1316594), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "pRVSdUxdsVw", title: "Repairing...", length: Some(965), @@ -264,14 +277,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("10 days ago"), - view_count: 478703, + view_count: Some(478703), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "gTG2WDbiYGo", title: "time machine", length: None, @@ -282,14 +297,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("11 days ago"), - view_count: 1412213, + view_count: Some(1412213), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "y5JK5YFp92g", title: "tiramissu", length: None, @@ -300,14 +317,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("13 days ago"), - view_count: 1513305, + view_count: Some(1513305), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "pvSWHm4wlxY", title: "having kids", length: None, @@ -318,14 +337,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 8936223, + view_count: Some(8936223), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "2FJVhdOO0F0", title: "a health scare", length: Some(1238), @@ -351,14 +372,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 987083, + view_count: Some(987083), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "CqFGACRrWJE", title: "just do it", length: None, @@ -369,14 +392,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 2769717, + view_count: Some(2769717), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "CutR_1SDDzY", title: "feels good to be back", length: Some(1159), @@ -402,14 +427,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 497660, + view_count: Some(497660), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "DdGr6t2NqKc", title: "coming soon", length: None, @@ -420,14 +447,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 572107, + view_count: Some(572107), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "jKS44NMWuXw", title: "adult money", length: None, @@ -438,14 +467,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 1707132, + view_count: Some(1707132), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "kx1YtJM_vbI", title: "a fig\'s journey", length: None, @@ -456,14 +487,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 933094, + view_count: Some(933094), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "Sdbzs-1WWH0", title: "How to.. Mozzarella 🧀", length: None, @@ -474,14 +507,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 5985184, + view_count: Some(5985184), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "9qBHyJIDous", title: "how to drink like a real korean", length: None, @@ -492,14 +527,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 14741387, + view_count: Some(14741387), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "mBeFDb4gp8s", title: "mr. krabs soup", length: None, @@ -510,14 +547,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 2511322, + view_count: Some(2511322), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "b38r1UYqoBQ", title: "in five years", length: None, @@ -528,14 +567,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 2364408, + view_count: Some(2364408), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "KUz7oArksR4", title: "running away", length: Some(1023), @@ -561,14 +602,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 706059, + view_count: Some(706059), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "RdFk4WaifEo", title: "a weeknight dinner", length: None, @@ -579,14 +622,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 1947627, + view_count: Some(1947627), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "GuyGyzZcumI", title: "McDonald\'s Michelin Burger", length: None, @@ -597,14 +642,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 4763839, + view_count: Some(4763839), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "07Zipsb3-qU", title: "cwispy potato pancake", length: None, @@ -615,14 +662,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 1915695, + view_count: Some(1915695), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "3kaePnU6Clo", title: "authenticity is overrated", length: None, @@ -633,14 +682,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 7268944, + view_count: Some(7268944), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "rt4rXMftnpg", title: "you can kimchi anything (T&C applies)", length: None, @@ -651,14 +702,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 2539103, + view_count: Some(2539103), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "DTyLUvbf128", title: "egg, soy, and perfect pot rice", length: None, @@ -669,14 +722,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 5545680, + view_count: Some(5545680), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "DzjLBgIe_aI", title: "love language", length: None, @@ -687,14 +742,16 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 2202314, + view_count: Some(2202314), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "sPb2gyN-hnE", title: "worth fighting for", length: Some(1232), @@ -720,14 +777,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 613416, + view_count: Some(613416), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "9JboRKeJ2m4", title: "Rating Italian McDonald\'s", length: None, @@ -738,14 +797,17 @@ Channel( height: 720, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 6443699, + view_count: Some(6443699), is_live: false, - is_short: true, + is_short: false, is_upcoming: false, + short_description: None, ), ], ctoken: Some("4qmFsgKrARIYVUNoOGdIZHR6TzJ0WGQ1OTNfYmpFcldnGmBFZ1oyYVdSbGIzTVlBeUFBTUFFNEFlb0RNRVZuYzBrM2NsTnVkazF4U1hWemRqQkJVMmQ1VFVGRk5FaHJTVXhEVUhac2NscHJSMFZKWVhWd016RkpRVlpCUVElM0QlM0SaAixicm93c2UtZmVlZFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ3ZpZGVvczEwMg%3D%3D"), + endpoint: browse, ), ) diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_upcoming.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_upcoming.snap index 3877486..17d784b 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_upcoming.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_upcoming.snap @@ -23,6 +23,7 @@ Channel( height: 176, ), ], + verification: Verified, description: "BRAND NEW SECOND CHANNEL: https://youtube.com/channel/UCcsQYra-bISsFxNqnd6Javw\n\nJoin my Discord: https://discord.gg/2YcarWsc8S\n", tags: [ "politics", @@ -132,7 +133,7 @@ Channel( content: Paginator( count: None, items: [ - ChannelVideo( + VideoItem( id: "B-KjpyR4n5Q", title: "The Online Manosphere", length: None, @@ -158,14 +159,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: Some("2022-09-27T18:00:00+02:00"), publish_date_txt: None, - view_count: 237, + view_count: Some(237), is_live: false, is_short: false, is_upcoming: true, + short_description: None, ), - ChannelVideo( + VideoItem( id: "umDsCyZ67J0", title: "Ukraine - The Beginning of the End", length: Some(614), @@ -191,14 +194,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("13 days ago"), - view_count: 742284, + view_count: Some(742284), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "dNgKGL8lQck", title: "Honest Russian Military Recruitment Video", length: Some(62), @@ -224,14 +229,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 420368, + view_count: Some(420368), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "UVWciFJeFNA", title: "Self-Driving Cars Will Only Make Traffic Worse", length: Some(458), @@ -257,14 +264,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 528718, + view_count: Some(528718), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "vyWaax07_ks", title: "NEOM Is The Parody Of The Future", length: Some(636), @@ -290,14 +299,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 897237, + view_count: Some(897237), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "onQ0ICkLEJw", title: "I Got An Email From \"The Dubai Sheikh\'s Personal Friend\"", length: Some(211), @@ -323,14 +334,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 526638, + view_count: Some(526638), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "yDEL1pTYOhs", title: "The \"Meritocracy\" Isn\'t Real", length: Some(385), @@ -356,14 +369,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 368801, + view_count: Some(368801), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "EnVvlhhqWtw", title: "City Review - Prague: Beautiful and Disappointing", length: Some(834), @@ -389,14 +404,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 286737, + view_count: Some(286737), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "Oxz4oY0T85Y", title: "European International Rail SUCKS, Here\'s Why", length: Some(810), @@ -422,14 +439,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 664499, + view_count: Some(664499), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "lxUEuOkblws", title: "Why the Straddling Bus Failed", length: Some(614), @@ -455,14 +474,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 592227, + view_count: Some(592227), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "UG8jiKOtedk", title: "How Canadian Ukrainian Volunteer Got Exposed", length: Some(538), @@ -488,14 +509,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 396946, + view_count: Some(396946), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "bQld7iJJSyk", title: "Why Roads ALWAYS Fill Up, No Matter How Much We Widen Them", length: Some(159), @@ -521,14 +544,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 778430, + view_count: Some(778430), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "WUK0K5mdQ_s", title: "Egypt\'s New Capital is an Ozymandian Nightmare", length: Some(870), @@ -554,14 +579,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 2118499, + view_count: Some(2118499), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "LB-vsT1Sl68", title: "Why Car-Centric Cities are a GREAT Idea", length: Some(369), @@ -587,14 +614,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 525824, + view_count: Some(525824), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "p8NiM_p8n5A", title: "HE FIXED TRAFFIC", length: Some(157), @@ -620,14 +649,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 1097056, + view_count: Some(1097056), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "U9YdnzOf4NQ", title: "Why a Mars Colony is a Stupid and Dangerous Idea", length: Some(1000), @@ -653,14 +684,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 1532114, + view_count: Some(1532114), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "CH55WpJxF1s", title: "What #Elongate Is Really About", length: Some(122), @@ -686,14 +719,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 511601, + view_count: Some(511601), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "PPcsZwUv350", title: "Vladimir Putin\'s Three Choices", length: Some(505), @@ -719,14 +754,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 662099, + view_count: Some(662099), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "B78-FgNqdc8", title: "Was I WRONG About Electric Buses?", length: Some(1536), @@ -752,14 +789,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 549826, + view_count: Some(549826), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "JCXLwOMSDxk", title: "If We Treated Afghanistan Like Ukraine", length: Some(92), @@ -785,14 +824,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 538197, + view_count: Some(538197), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "IpIWswLYAbA", title: "Who\'s Winning the War for Ukraine?", length: Some(646), @@ -818,14 +859,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("5 months ago"), - view_count: 536648, + view_count: Some(536648), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "NIItoD1Ebh0", title: "Old Habits Die Hard", length: Some(107), @@ -851,14 +894,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("5 months ago"), - view_count: 724630, + view_count: Some(724630), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "pENUV9DLa2g", title: "Anarcho-Capitalism In Practice III - The Final Attempt", length: Some(600), @@ -884,14 +929,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("5 months ago"), - view_count: 426960, + view_count: Some(426960), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "gFGQI8P9BMg", title: "How The Gravel Institute Lies To You About Ukraine", length: Some(2472), @@ -917,14 +964,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 735941, + view_count: Some(735941), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "AVLevneWvaE", title: "Why Russia Can\'t Achieve Air Supremacy In Ukraine", length: Some(188), @@ -950,14 +999,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 502205, + view_count: Some(502205), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "MfRcY90OccY", title: "Can Ukraine Actually WIN This?", length: Some(606), @@ -983,14 +1034,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 718668, + view_count: Some(718668), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "dQXwreYzJ40", title: "Here\'s What Will Happen To Ukraine [Update: yep, called it]", length: Some(397), @@ -1016,14 +1069,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("7 months ago"), - view_count: 775830, + view_count: Some(775830), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "-OO3RiNMDB8", title: "Assessing The Russian Invasion Threat", length: Some(655), @@ -1049,14 +1104,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("7 months ago"), - view_count: 480357, + view_count: Some(480357), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "obMTYs30E9A", title: "Ukraine - The Country That Defied Vladimir Putin", length: Some(2498), @@ -1082,14 +1139,16 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("7 months ago"), - view_count: 460878, + view_count: Some(460878), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), - ChannelVideo( + VideoItem( id: "4-2bR1iFlhk", title: "\"Wait, Russia isn\'t in NATO?!\" Insane Debate on Ukraine, US Politics, and more!", length: Some(12151), @@ -1115,14 +1174,17 @@ Channel( height: 188, ), ], + channel: None, publish_date: "[date]", publish_date_txt: Some("7 months ago"), - view_count: 228151, + view_count: Some(228151), is_live: false, is_short: false, is_upcoming: false, + short_description: None, ), ], ctoken: Some("4qmFsgKnARIYVUNjdmZIYS1HSFNPSEZBalUwLUllNTdBGlxFZ1oyYVdSbGIzTVlBeUFBTUFFNEFlb0RNa1ZuYzBsdFlYbFhlRkJZYnpWMlltcEJVMmQ1VFVGRk5FaHJTVTFEVFdGVWVrcHJSMFZPUzJzMmNqQkNVMEZHVVVGQpoCLGJyb3dzZS1mZWVkVUNjdmZIYS1HSFNPSEZBalUwLUllNTdBdmlkZW9zMTAy"), + endpoint: browse, ), ) diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_cont.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_channel_playlists.snap similarity index 90% rename from src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_cont.snap rename to src/client/snapshots/rustypipe__client__pagination__tests__map_channel_playlists.snap index 9dc1983..d1dfe9d 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists_cont.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_channel_playlists.snap @@ -1,11 +1,11 @@ --- -source: src/client/channel.rs +source: src/client/pagination.rs expression: map_res.c --- Paginator( count: None, items: [ - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHutdg1kZkG7aAYhjoJnk2fc", name: "Nixie Tube Display Project", thumbnail: [ @@ -15,9 +15,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(9), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHujYmL_-5CBUg-za2osSUVI", name: "Mystery Teardown", thumbnail: [ @@ -27,9 +28,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(16), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHuGQmy-eJgqB28b2AWKteuG", name: "EEVsmoke", thumbnail: [ @@ -39,9 +41,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(2), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHuSab0CmpulB2Wv8Kz0985m", name: "EEVcomments", thumbnail: [ @@ -51,9 +54,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(1), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvtQ5FxEivbCGxp4t3W8zKE", name: "Spectrum Analyser", thumbnail: [ @@ -63,9 +67,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(11), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHuJUxiTbVKHzWjvIVf1NVOl", name: "Space", thumbnail: [ @@ -75,9 +80,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(5), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHtTXTVCXVDIRKV442ynD7Pz", name: "Lunar Rover", thumbnail: [ @@ -87,9 +93,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(1), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHsma5qL7piUiM5N4IOyuQyx", name: "Wayback Wednesday", thumbnail: [ @@ -99,9 +106,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(1), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvLb_HJBKqbgZ9IvEX-pVOF", name: "Magazines", thumbnail: [ @@ -111,9 +119,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(4), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHugE85Y_LckT4EhrKwo7WQe", name: "Embedded Computing", thumbnail: [ @@ -123,9 +132,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(4), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHu3GsTHwHoAXlWVcL3c3dA0", name: "High Speed Camera", thumbnail: [ @@ -135,9 +145,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(2), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvTyDxI-_RDK8UlPbJ5FNf9", name: "Announcements & Misc", thumbnail: [ @@ -147,9 +158,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(28), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHtT17_AeYMe-EOS_GXCBQQ1", name: "Interviews", thumbnail: [ @@ -159,9 +171,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(9), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHsCTtj-T_vkpTTbBXW4sB51", name: "Oscilloscope Tutorials", thumbnail: [ @@ -171,9 +184,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(38), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHsKCtJJ_rlRP5qE7lN-1EMX", name: "Anti-Static ESD", thumbnail: [ @@ -183,9 +197,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(7), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvFf9a2swL8QVMwji0wT3ha", name: "Unboxing", thumbnail: [ @@ -195,9 +210,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(2), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHtn9n6n-uB8VNCTrERwYxLZ", name: "Power Supplies", thumbnail: [ @@ -207,9 +223,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(43), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHuo-6paPTh3ji7AEMpnSna6", name: "CNC Milling Machine", thumbnail: [ @@ -219,9 +236,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(1), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvpVeLXSGlS7EBlY3zKfIXh", name: "Capacitors", thumbnail: [ @@ -231,9 +249,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(15), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHsNGit9YgkuxsFtFNJxwgot", name: "PCB Assembly", thumbnail: [ @@ -243,9 +262,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(5), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvsggk5TwGdR2BZcoKRkQ2I", name: "3D Printing", thumbnail: [ @@ -255,9 +275,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(6), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHtH_DR5hAIGQ-Ty6f9TZWNV", name: "Video Editing / PC Builds", thumbnail: [ @@ -267,9 +288,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(3), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvPZ1-dDC449w_r2M0R4jtc", name: "Solar Power Systems", thumbnail: [ @@ -279,9 +301,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(19), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHtolTr61FnHtvZb6tRPrs8m", name: "EEVblab", thumbnail: [ @@ -291,9 +314,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(101), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHsc8y1buFPJZaD1kKzIxpWL", name: "Repairs", thumbnail: [ @@ -303,9 +327,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(78), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvBpmbLABRmSKv2b0C4LWV_", name: "Debunking", thumbnail: [ @@ -315,9 +340,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(73), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHs_8iObryqVCeqLIo5KTFQ-", name: "Lab Bench Builds + ESD Mats", thumbnail: [ @@ -327,9 +353,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(9), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvatF_8oJ2qpKxi_wWw6YN4", name: "Reverse Engineering", thumbnail: [ @@ -339,9 +366,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(10), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvwQR69zYRyxSkujQs2SgLl", name: "Scams", thumbnail: [ @@ -351,9 +379,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(5), ), - ChannelPlaylist( + PlaylistItem( id: "PLvOlSehNtuHvRvEU3VebO2JHa1I_iIAQD", name: "Hacking / Experiments", thumbnail: [ @@ -363,8 +392,10 @@ Paginator( height: 270, ), ], + channel: None, video_count: Some(63), ), ], ctoken: Some("4qmFsgLCARIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGnRFZ2x3YkdGNWJHbHpkSE1ZQXlBQk1BRTRBZW9EUEVOblRrUlJhbEZUU2tKSmFWVkZlREpVTW5oVVdsZG9UMlJJVmtsa2JFb3lVbFpWZWxadFZtbFVla3BMVTBkRmVGTldPWEJUVlVaU1VrTm5PQSUzRCUzRJoCL2Jyb3dzZS1mZWVkVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RcGxheWxpc3RzMTA0"), + endpoint: browse, ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_recommendations.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_recommendations.snap similarity index 85% rename from src/client/snapshots/rustypipe__client__video_details__tests__map_recommendations.snap rename to src/client/snapshots/rustypipe__client__pagination__tests__map_recommendations.snap index 0b5b63d..6e0e9a9 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_recommendations.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_recommendations.snap @@ -1,11 +1,11 @@ --- -source: src/client/video_details.rs +source: src/client/pagination.rs expression: map_res.c --- Paginator( count: None, items: [ - RecommendedVideo( + Video(VideoItem( id: "WPdWvnAAurg", title: "aespa 에스파 \'Savage\' MV", length: Some(259), @@ -21,7 +21,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -31,16 +31,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 months ago"), - view_count: 216222873, + view_count: Some(216222873), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "Y8JFxS1HlDo", title: "IVE 아이브 \'LOVE DIVE\' MV", length: Some(179), @@ -56,7 +58,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCYDmx2Sfpnaxg488yBpZIGg", name: "starshipTV", avatar: [ @@ -66,16 +68,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 months ago"), - view_count: 155106313, + view_count: Some(155106313), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "NoYKBAajoyo", title: "EVERGLOW (에버글로우) - DUN DUN MV", length: Some(209), @@ -91,7 +95,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_pwIXKXNm5KGhdEVzmY60A", name: "Stone Music Entertainment", avatar: [ @@ -101,16 +105,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 265238677, + view_count: Some(265238677), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "yQUU29NwNF4", title: "aespa(에스파) - Black Mamba @인기가요 inkigayo 20201122", length: Some(213), @@ -126,7 +132,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCS_hnpJLQTvBkqALgapi_4g", name: "스브스케이팝 X INKIGAYO", avatar: [ @@ -136,16 +142,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 9989591, + view_count: Some(9989591), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "NU611fxGyPU", title: "aespa 에스파 \'Black Mamba\' Dance Practice", length: Some(175), @@ -161,7 +169,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC9GtSLeksfK4yuJ_g1lgQbg", name: "aespa", avatar: [ @@ -171,16 +179,18 @@ Paginator( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 34588526, + view_count: Some(34588526), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "EaswWiwMVs8", title: "Stray Kids \"소리꾼(Thunderous)\" M/V", length: Some(199), @@ -196,7 +206,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -206,16 +216,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 242737870, + view_count: Some(242737870), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "Ujb-gvqsoi0", title: "Red Velvet - IRENE & SEULGI \'Monster\' MV", length: Some(182), @@ -231,7 +243,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -241,16 +253,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 126677200, + view_count: Some(126677200), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "gQlMMD8auMs", title: "BLACKPINK - ‘Pink Venom’ M/V", length: Some(194), @@ -266,7 +280,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -276,16 +290,18 @@ Paginator( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 335903776, + view_count: Some(335903776), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "BL-aIpCLWnU", title: "Black Mamba", length: Some(175), @@ -301,7 +317,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC9GtSLeksfK4yuJ_g1lgQbg", name: "aespa", avatar: [ @@ -311,16 +327,18 @@ Paginator( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 86125645, + view_count: Some(86125645), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "Jh4QFaPmdss", title: "(G)I-DLE - \'TOMBOY\' Official Music Video", length: Some(198), @@ -336,7 +354,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCritGVo7pLJLUS8wEu32vow", name: "(G)I-DLE (여자)아이들 (Official YouTube Channel)", avatar: [ @@ -346,16 +364,18 @@ Paginator( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 170016610, + view_count: Some(170016610), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "Fc-fa6cAe2c", title: "KAI 카이 \'음 (Mmmh)\' MV", length: Some(207), @@ -371,7 +391,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -381,16 +401,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 123861096, + view_count: Some(123861096), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "dYRITmpFbJ4", title: "aespa 에스파 \'Girls\' MV", length: Some(269), @@ -406,7 +428,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -416,16 +438,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 101968219, + view_count: Some(101968219), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "mH0_XpSHkZo", title: "TWICE \"MORE & MORE\" M/V", length: Some(241), @@ -441,7 +465,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -451,16 +475,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 322510403, + view_count: Some(322510403), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "uR8Mrt1IpXg", title: "Red Velvet 레드벨벳 \'Psycho\' MV", length: Some(216), @@ -476,7 +502,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -486,16 +512,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 345491789, + view_count: Some(345491789), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "f5_wn8mexmM", title: "TWICE \"The Feels\" M/V", length: Some(232), @@ -511,7 +539,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -521,16 +549,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 months ago"), - view_count: 314744776, + view_count: Some(314744776), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "Ky5RT5oGg0w", title: "aespa 에스파 \'Black Mamba\' The Debut Stage", length: Some(287), @@ -546,7 +576,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC9GtSLeksfK4yuJ_g1lgQbg", name: "aespa", avatar: [ @@ -556,16 +586,18 @@ Paginator( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 18830758, + view_count: Some(18830758), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "gU2HqP4NxUs", title: "BLACKPINK - ‘Pretty Savage’ 1011 SBS Inkigayo", length: Some(208), @@ -581,7 +613,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -591,16 +623,18 @@ Paginator( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 282957370, + view_count: Some(282957370), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "KhTeiaCezwM", title: "[MV] MAMAMOO (마마무) - HIP", length: Some(211), @@ -616,7 +650,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCuhAUMLzJxlP1W7mEk0_6lA", name: "MAMAMOO", avatar: [ @@ -626,16 +660,18 @@ Paginator( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 355203298, + view_count: Some(355203298), is_live: false, is_short: false, - ), - RecommendedVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "uxmP4b2a0uY", title: "EXO 엑소 \'Obsession\' MV", length: Some(220), @@ -651,7 +687,7 @@ Paginator( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -661,15 +697,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 157400947, + view_count: Some(157400947), is_live: false, is_short: false, - ), + is_upcoming: false, + short_description: None, + )), ], ctoken: Some("CCgSExILWmVlcnJudUxpNUXAAQHIAQEYACrLDDJzNkw2d3l4Q1FxdUNRb0Q4ajRBQ2czQ1Bnb0l4LUM1djltdnBwZ3lDZ1B5UGdBS0RjSS1DZ2pxM0xYRXpkNk00VUVLQV9JLUFBb093ajRMQ1Bqc19JLUVsWTI5MWdFS0FfSS1BQW93MGo0dENpdFNSRU5NUVVzMWRYbGZhekkzZFhVdFJYUlJYMkkxVlRKeU1qWkVUa1JhVDIxT2NVZGtZMk5WU1VkUkNnUHlQZ0FLRHNJLUN3amZ2czJMbjRUcG5iUUJDZ1B5UGdBS0V0SS1Ed29OVWtSYVpXVnljbTUxVEdrMVJRb0Q4ajRBQ2c3Q1Bnc0kzYmJTdThMRy1wS1VBUW9EOGo0QUNnN0NQZ3NJX2JYd2lmQzJ0WlczQVFvRDhqNEFDZzdDUGdzSXpZckE3b0RHbzlMUUFRb0Q4ajRBQ2czQ1Bnb0l0N212dk9fUjVJUnZDZ1B5UGdBS0RjSS1DZ2lBcDdMWDBlYWxyaW9LQV9JLUFBb053ajRLQ0luanlmalZ0dUwxWHdvRDhqNEFDZzNDUGdvSXBKZmozYVR5X2MwZkNnUHlQZ0FLRGNJLUNnamJtNW1MbGRLQTV3Z0tBX0ktQUFvT3dqNExDTFRhOF9UNjE3U3UyQUVLQV9JLUFBb053ajRLQ05xMHBhdXZzS1BDZEFvRDhqNEFDZzdDUGdzSTVQR3E5WTIybWNXZ0FRb0Q4ajRBQ2c3Q1Bnc0lnNkdPN3JidzJjR0tBUW9EOGo0QUNnN0NQZ3NJenEtbWxQUy01SnJoQVFvRDhqNEFDZzdDUGdzSXZNbnBqSUtUeXBYX0FRb0Q4ajRBQ2czQ1Bnb0l1UFdDZ09mWDFmdFlDZ1B5UGdBS0g5SS1IQW9hVWtSRlRWUnVTbmxSZDJsamFHMW5lbm96VGxKSlVIVmxWMUVLQV9JLUFBb053ajRLQ0xxb251clN1SkhoWXdvRDhqNEFDZzNDUGdvSXFzYU90Y0RBZ3NNMkNnUHlQZ0FLRHNJLUN3amU2TUNidlp2Rmdza0JDZ1B5UGdBS0RjSS1DZ2oxa1p2aTM3cXRwelVLQV9JLUFBb053ajRLQ00tdHNlQ2lpOHpWRVFvRDhqNEFDZzNDUGdvSXJjU3kxYV9RdjV0U0NnUHlQZ0FLRHNJLUN3akw4ZXI0ZzRiVGhJRUJDZ1B5UGdBS0RjSS1DZ2oxdEsyRXFjVG0zd1FLQV9JLUFBb053ajRLQ012dG1aX2Fnb1NQSmdvRDhqNEFDZzNDUGdvSTVfYUJ1THJ0NS1jVkNnUHlQZ0FLRGNJLUNnaWUyWlhTNW9tU3duVUtBX0ktQUFvT3dqNExDSnFqbnFUcDY4LS1tQUVLQV9JLUFBb093ajRMQ1BqS291cnRsY09QdVFFS0FfSS1BQW9Od2o0S0NPT00tOHo4a196UGZ3b0Q4ajRBQ2czQ1Bnb0l6SWFhMFBtcGxKY3JDZ1B5UGdBS0RzSS1Dd2pMaXJmd2pfWGhwb0VCQ2dQeVBnQUtEY0ktQ2dpRG52dUVtdEczaWlvS0FfSS1BQW9Pd2o0TENPYWw2LXliX09PTXV3RVNLQUFDQkFZSUNnd09FQklVRmhnYUhCNGdJaVFtS0Nvc0xqQXlORFk0T2p3LVFFSkVSa2hLVEU0YUJBZ0FFQUVhQkFnQ0VBTWFCQWdFRUFVYUJBZ0dFQWNhQkFnSUVBa2FCQWdLRUFzYUJBZ01FQTBhQkFnT0VBOGFCQWdRRUJFYUJBZ1NFQk1hQkFnVUVCVWFCQWdXRUJjYUJBZ1lFQmthQkFnYUVCc2FCQWdjRUIwYUJBZ2VFQjhhQkFnZ0VDRWFCQWdpRUNNYUJBZ2tFQ1VhQkFnbUVDY2FCQWdvRUNrYUJBZ3FFQ3NhQkFnc0VDMGFCQWd1RUM4YUJBZ3dFREVhQkFneUVETWFCQWcwRURVYUJBZzJFRGNhQkFnNEVEa2FCQWc2RURzYUJBZzhFRDBhQkFnLUVEOGFCQWhBRUVFYUJBaENFRU1hQkFoRUVFVWFCQWhHRUVjYUJBaElFRWthQkFoS0VFc2FCQWhNRUUwYUJBaE9FRThxS0FBQ0JBWUlDZ3dPRUJJVUZoZ2FIQjRnSWlRbUtDb3NMakF5TkRZNE9qdy1RRUpFUmtoS1RFNGoPd2F0Y2gtbmV4dC1mZWVkcgA%3D"), + endpoint: browse, ) diff --git a/src/client/snapshots/rustypipe__client__search__tests__map_search_cont.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_search.snap similarity index 75% rename from src/client/snapshots/rustypipe__client__search__tests__map_search_cont.snap rename to src/client/snapshots/rustypipe__client__pagination__tests__map_search.snap index 937e40b..ca5e349 100644 --- a/src/client/snapshots/rustypipe__client__search__tests__map_search_cont.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_search.snap @@ -1,11 +1,11 @@ --- -source: src/client/search.rs +source: src/client/pagination.rs expression: map_res.c --- Paginator( count: Some(7250), items: [ - Video(SearchVideo( + Video(VideoItem( id: "N5AKQflK1TU", title: "When you impulse buy...", length: Some(60), @@ -16,7 +16,7 @@ Paginator( height: 720, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -26,17 +26,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 859366, + view_count: Some(859366), is_live: false, is_short: true, - short_description: "shorts #jam https://doobydobap.com/recipe/hongsi_jam Instagram @doobydobap Join my discord!", + is_upcoming: false, + short_description: Some("shorts #jam https://doobydobap.com/recipe/hongsi_jam Instagram @doobydobap Join my discord!"), )), - Video(SearchVideo( + Video(VideoItem( id: "OzIFALQ_YtA", title: "taste testing gam!", length: Some(60), @@ -47,7 +48,7 @@ Paginator( height: 720, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -57,17 +58,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 days ago"), - view_count: 1000402, + view_count: Some(1000402), is_live: false, is_short: true, - short_description: "shorts #fruit #mukbang Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for\u{a0}...", + is_upcoming: false, + short_description: Some("shorts #fruit #mukbang Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "zYHB38UlzE0", title: "Q&A l relationships, burnout, privilege, college advice, living alone, and life after youtube?", length: Some(775), @@ -83,7 +85,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -93,17 +95,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 528795, + view_count: Some(528795), is_live: false, is_short: false, - short_description: "So many questions I wasn\'t able to answer, but if you comment below I\'ll try and answer every single one of them!!!! A little bit of\u{a0}...", + is_upcoming: false, + short_description: Some("So many questions I wasn\'t able to answer, but if you comment below I\'ll try and answer every single one of them!!!! A little bit of\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "GvutfmW26JQ", title: "👹stay sour 🍋", length: Some(52), @@ -114,7 +117,7 @@ Paginator( height: 720, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -124,17 +127,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 days ago"), - view_count: 1096055, + view_count: Some(1096055), is_live: false, is_short: true, - short_description: "Ingredients: ** Citrus Filling** 1 cup mandarin juice or any orange-y citrus in season! 6 eggs 1 1/2 cup sugar ⅓ cup flour zest of 1\u{a0}...", + is_upcoming: false, + short_description: Some("Ingredients: ** Citrus Filling** 1 cup mandarin juice or any orange-y citrus in season! 6 eggs 1 1/2 cup sugar ⅓ cup flour zest of 1\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "gK-jLnvVsb0", title: "Contradicting myself", length: Some(1381), @@ -150,7 +154,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -160,17 +164,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 months ago"), - view_count: 928968, + view_count: Some(928968), is_live: false, is_short: false, - short_description: "Sesame Granola Recipe 2 cups old-fashioned instant oats 2 cups mixture of seeds / nuts of your choice (I used ½ cup each of\u{a0}...", + is_upcoming: false, + short_description: Some("Sesame Granola Recipe 2 cups old-fashioned instant oats 2 cups mixture of seeds / nuts of your choice (I used ½ cup each of\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "NudTbo2CJMY", title: "Flying to London", length: Some(1078), @@ -186,7 +191,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -196,17 +201,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 months ago"), - view_count: 1137138, + view_count: Some(1137138), is_live: false, is_short: false, - short_description: "Tomato Beef Curry 1 packet Japanese Curry Roux 250g thinly sliced beef 2 large onions 2 tbsp butter 2 tbsp neutral oil 1 can\u{a0}...", + is_upcoming: false, + short_description: Some("Tomato Beef Curry 1 packet Japanese Curry Roux 250g thinly sliced beef 2 large onions 2 tbsp butter 2 tbsp neutral oil 1 can\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "Nc0HzyDRjm0", title: "Stekki-don ㅣ After Hours ep.2", length: Some(749), @@ -222,7 +228,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -232,17 +238,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 months ago"), - view_count: 462437, + view_count: Some(462437), is_live: false, is_short: false, - short_description: "Stekki-Don (for two, or for one very hungry person) 500g Ribeye 1 tsp Kosher salt 2 tbsp unsalted butter Sauce 4 tbsp light soy\u{a0}...", + is_upcoming: false, + short_description: Some("Stekki-Don (for two, or for one very hungry person) 500g Ribeye 1 tsp Kosher salt 2 tbsp unsalted butter Sauce 4 tbsp light soy\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "pvSWHm4wlxY", title: "having kids", length: Some(60), @@ -253,7 +260,7 @@ Paginator( height: 720, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -263,17 +270,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 11285067, + view_count: Some(11285067), is_live: false, is_short: true, - short_description: "shorts Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for recipes & stories.", + is_upcoming: false, + short_description: Some("shorts Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for recipes & stories."), )), - Video(SearchVideo( + Video(VideoItem( id: "fGQUWI4o__A", title: "Baskin Robbins in South Korea", length: Some(53), @@ -284,7 +292,7 @@ Paginator( height: 720, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -294,17 +302,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 2415040, + view_count: Some(2415040), is_live: false, is_short: true, - short_description: "shorts #icecream Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for recipes\u{a0}...", + is_upcoming: false, + short_description: Some("shorts #icecream Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for recipes\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "GuyGyzZcumI", title: "McDonald\'s Michelin Burger", length: Some(59), @@ -315,7 +324,7 @@ Paginator( height: 720, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -325,17 +334,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 5100787, + view_count: Some(5100787), is_live: false, is_short: true, - short_description: "mcdonalds #michelin #fastfood Instagram @doobydobap Join my discord! https://discord.gg/doobyverse\u{a0}...", + is_upcoming: false, + short_description: Some("mcdonalds #michelin #fastfood Instagram @doobydobap Join my discord! https://discord.gg/doobyverse\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "6VGG19W08UQ", title: "Nostalgia is a powerful ingredient", length: Some(52), @@ -346,7 +356,7 @@ Paginator( height: 480, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -356,17 +366,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("10 months ago"), - view_count: 55308394, + view_count: Some(55308394), is_live: false, is_short: true, - short_description: "shorts ASMR version on my Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com\u{a0}...", + is_upcoming: false, + short_description: Some("shorts ASMR version on my Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "p3Xhx6aQEXo", title: "Jjajangmyun ㅣ Doob Gourmand ep.2", length: Some(664), @@ -382,7 +393,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -392,17 +403,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 months ago"), - view_count: 774061, + view_count: Some(774061), is_live: false, is_short: false, - short_description: "Stay on for bloopers! Vlog coming on Tuesday!! Location 의천각 Uicheongag 수정구 신흥동 6907번지 성남시 경기도 KR\u{a0}...", + is_upcoming: false, + short_description: Some("Stay on for bloopers! Vlog coming on Tuesday!! Location 의천각 Uicheongag 수정구 신흥동 6907번지 성남시 경기도 KR\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "35Gu3Q6qEn4", title: "Deal Breakers", length: Some(60), @@ -413,7 +425,7 @@ Paginator( height: 480, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -423,17 +435,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 months ago"), - view_count: 12314192, + view_count: Some(12314192), is_live: false, is_short: true, - short_description: "shorts another deal breaker: people who like chocolate chip banana bread over regular-- you heard me Recipe: Wet: 3 very ripe\u{a0}...", + is_upcoming: false, + short_description: Some("shorts another deal breaker: people who like chocolate chip banana bread over regular-- you heard me Recipe: Wet: 3 very ripe\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "JoUdBrUpBN0", title: "Jjambbong, jjajangmyeon\'s biggest rival", length: Some(56), @@ -444,7 +457,7 @@ Paginator( height: 480, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -454,17 +467,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 4266748, + view_count: Some(4266748), is_live: false, is_short: true, - short_description: "shorts Recipe on my website at www.doobydobap.com/recipe.", + is_upcoming: false, + short_description: Some("shorts Recipe on my website at www.doobydobap.com/recipe."), )), - Video(SearchVideo( + Video(VideoItem( id: "l76ovWsPLi8", title: "Jjagglee, Ricotta Persimmon Toast, Plants, and Pringles! l Home Alone All Day Vlog", length: Some(673), @@ -480,7 +494,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -490,17 +504,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("9 months ago"), - view_count: 439888, + view_count: Some(439888), is_live: false, is_short: false, - short_description: "Ingredients for jjaglee 1 cup pork belly 1 cup fermented kimchi ½ onion 1 leek 1 firm tofu 1.5 tbsp gochujang 2 tbsp coarse\u{a0}...", + is_upcoming: false, + short_description: Some("Ingredients for jjaglee 1 cup pork belly 1 cup fermented kimchi ½ onion 1 leek 1 firm tofu 1.5 tbsp gochujang 2 tbsp coarse\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "zt1Lx9L619w", title: "The biggest privilege my rich friends have", length: Some(58), @@ -511,7 +526,7 @@ Paginator( height: 480, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -521,16 +536,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 9312774, + view_count: Some(9312774), is_live: false, is_short: true, - short_description: "shorts #japanese #curry Tomato Beef Curry 1 packet Japanese Curry Roux 250g thinly sliced beef 2 large onions 2 tbsp butter 2\u{a0}...", + is_upcoming: false, + short_description: Some("shorts #japanese #curry Tomato Beef Curry 1 packet Japanese Curry Roux 250g thinly sliced beef 2 large onions 2 tbsp butter 2\u{a0}..."), )), ], ctoken: Some("EpMDEgpkb29ieWRvYmFwGoQDU0NpQ0FRdE9OVUZMVVdac1N6RlVWWUlCQzA5NlNVWkJURkZmV1hSQmdnRUxjako1WlRaNlZ6QnVZazJDQVF0NldVaENNemhWYkhwRk1JSUJDMGQyZFhSbWJWY3lOa3BSZ2dFTFVuSnZXWEJNZUhoT2FsbUNBUXRzTkRkUmRYVmtjMW96TklJQkMyZExMV3BNYm5aV2MySXdnZ0VMVG5Wa1ZHSnZNa05LVFZtQ0FRdE9ZekJJZW5sRVVtcHRNSUlCQzNCMlUxZEliVFIzYkhoWmdnRUxaa2RSVlZkSk5HOWZYMEdDQVF0UWVFZHRVRFIyWDBFek9JSUJDMGQxZVVkNWVscGpkVzFKZ2dFTE5sWkhSekU1VnpBNFZWR0NBUXR3TTFob2VEWmhVVVZZYjRJQkN6TTFSM1V6VVRaeFJXNDBnZ0VMU205VlpFSnlWWEJDVGpDQ0FRdHNOelp2ZGxkelVFeHBPSUlCQzNwME1VeDRPVXcyTVRsM3NnRUdDZ1FJSnhBRBiB4OgYIgtzZWFyY2gtZmVlZA%3D%3D"), + endpoint: browse, ) diff --git a/src/client/snapshots/rustypipe__client__trends__tests__map_startpage_cont.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_startpage.snap similarity index 74% rename from src/client/snapshots/rustypipe__client__trends__tests__map_startpage_cont.snap rename to src/client/snapshots/rustypipe__client__pagination__tests__map_startpage.snap index ebba345..7e8a2cb 100644 --- a/src/client/snapshots/rustypipe__client__trends__tests__map_startpage_cont.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_startpage.snap @@ -1,11 +1,11 @@ --- -source: src/client/trends.rs +source: src/client/pagination.rs expression: map_res.c --- Paginator( count: None, items: [ - SearchVideo( + Video(VideoItem( id: "mRmlXh7Hams", title: "Extra 3 vom 12.10.2022 im NDR | extra 3 | NDR", length: Some(1839), @@ -16,7 +16,7 @@ Paginator( height: 270, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCjhkuC_Pi85wGjnB0I1ydxw", name: "extra 3", avatar: [ @@ -26,17 +26,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 585257, + view_count: Some(585257), is_live: false, is_short: false, - short_description: "Niedersachsen nach der Wahl: Schuld ist immer die Ampel | Die Grünen: Partei der erneuerbaren Prinzipien | Verhütung? Ist Frauensache! | Youtube: Handwerk mit goldenem Boden - Christian Ehring...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("Niedersachsen nach der Wahl: Schuld ist immer die Ampel | Die Grünen: Partei der erneuerbaren Prinzipien | Verhütung? Ist Frauensache! | Youtube: Handwerk mit goldenem Boden - Christian Ehring..."), + )), + Video(VideoItem( id: "LsXC5r64Pvc", title: "Most Rarest Plays In Baseball History", length: Some(1975), @@ -47,7 +48,7 @@ Paginator( height: 270, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCRfKJZ7LHueFudiDgAJDr9Q", name: "Top All Sports", avatar: [ @@ -57,17 +58,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 985521, + view_count: Some(985521), is_live: false, is_short: false, - short_description: "#baseball #mlb #mlbb", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("#baseball #mlb #mlbb"), + )), + Video(VideoItem( id: "dwPmd1GqQHE", title: "90S RAP & HIPHOP MIX - Notorious B I G , Dr Dre, 50 Cent, Snoop Dogg, 2Pac, DMX, Lil Jon and more", length: Some(5457), @@ -78,7 +80,7 @@ Paginator( height: 270, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCKICAAGtBLJJ5zRdIxn_B4g", name: "#Hip Hop 2022", avatar: [ @@ -88,17 +90,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 months ago"), - view_count: 1654055, + view_count: Some(1654055), is_live: false, is_short: false, - short_description: "", - ), - SearchVideo( + is_upcoming: false, + short_description: None, + )), + Video(VideoItem( id: "qxI-Ob8lpLE", title: "Schlatt\'s Chips Tier List", length: Some(1071), @@ -114,7 +117,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2mP7il3YV7TxM_3m6U0bwA", name: "jschlattLIVE", avatar: [ @@ -124,17 +127,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 9029628, + view_count: Some(9029628), is_live: false, is_short: false, - short_description: "Schlatt ranks every chip ever made.\nCREATE YOUR OWN TIER LIST: https://tiermaker.com/create/chips-for-big-guy-1146620\n\nSubscribe to me on Twitch:\nhttps://twitch.tv/jschlatt\n\nFollow me on Twitter:...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("Schlatt ranks every chip ever made.\nCREATE YOUR OWN TIER LIST: https://tiermaker.com/create/chips-for-big-guy-1146620\n\nSubscribe to me on Twitch:\nhttps://twitch.tv/jschlatt\n\nFollow me on Twitter:..."), + )), + Video(VideoItem( id: "qmrzTUmZ4UU", title: "850€ für den Verrat am System - UCS AT-AT LEGO® Star Wars 75313", length: Some(2043), @@ -150,7 +154,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_EZd3lsmxudu3IQzpTzOgw", name: "Held der Steine Inh. Thomas Panke", avatar: [ @@ -160,17 +164,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 days ago"), - view_count: 600516, + view_count: Some(600516), is_live: false, is_short: false, - short_description: "Star Wars - erschienen 2021 - 6749 Teile\n\nDieses Set bei Amazon*:\nhttps://amzn.to/3yu9dHX\n\nErwähnt im Video*:\nTassen https://bit.ly/HdSBausteinecke\nBig Boy https://bit.ly/BBLokBigBoy\nBurg...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("Star Wars - erschienen 2021 - 6749 Teile\n\nDieses Set bei Amazon*:\nhttps://amzn.to/3yu9dHX\n\nErwähnt im Video*:\nTassen https://bit.ly/HdSBausteinecke\nBig Boy https://bit.ly/BBLokBigBoy\nBurg..."), + )), + Video(VideoItem( id: "4q4vpQCIZ6w", title: "🌉 Manhattan Jazz 💖 l Relaxing Jazz Piano Music l Background Music", length: Some(23229), @@ -186,7 +191,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCBnMxlW70f0SB4ZTJx124lw", name: "몽키비지엠 MONKEYBGM", avatar: [ @@ -196,17 +201,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 2343407, + view_count: Some(2343407), is_live: false, is_short: false, - short_description: "- Please Subscribe!\n\n🔺Disney OST Collection part 1 \n ➡\u{fe0f} https://youtu.be/lrzKFu85nhE\n\n🔺Disney OST Collection part 2 \n ➡\u{fe0f} https://youtu.be/EtE09lowIbk\n\n🔺Studio Ghibli...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("- Please Subscribe!\n\n🔺Disney OST Collection part 1 \n ➡\u{fe0f} https://youtu.be/lrzKFu85nhE\n\n🔺Disney OST Collection part 2 \n ➡\u{fe0f} https://youtu.be/EtE09lowIbk\n\n🔺Studio Ghibli..."), + )), + Video(VideoItem( id: "Z_k31kqZxaE", title: "1 in 1,000,000 NBA Moments", length: Some(567), @@ -222,7 +228,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCpyoYVlp67N16Lg1_N4VnVw", name: "dime", avatar: [ @@ -232,17 +238,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 4334298, + view_count: Some(4334298), is_live: false, is_short: false, - short_description: "• Instagram - https://instagram.com/dime_nba\n• TikTok - https://tiktok.com/@dime_nba\n\ndime is a Swedish brand, founded in 2022. We produce some of the most entertaining NBA content on YouTube...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("• Instagram - https://instagram.com/dime_nba\n• TikTok - https://tiktok.com/@dime_nba\n\ndime is a Swedish brand, founded in 2022. We produce some of the most entertaining NBA content on YouTube..."), + )), + Video(VideoItem( id: "zE-a5eqvlv8", title: "Dua Lipa, Coldplay, Martin Garrix & Kygo, The Chainsmokers Style - Feeling Me", length: None, @@ -258,7 +265,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCX-USfenzQlhrEJR1zD5IYw", name: "Deep Mood.", avatar: [ @@ -268,17 +275,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 889, - is_live: false, + view_count: Some(889), + is_live: true, is_short: false, - short_description: "#Summermix #DeepHouse #DeepHouseSummerMix\nDua Lipa, Coldplay, Martin Garrix & Kygo, The Chainsmokers Style - Feeling Me\n\n🎵 All songs in this spotify playlist: https://spoti.fi/2TJ4Dyj\nSubmit...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("#Summermix #DeepHouse #DeepHouseSummerMix\nDua Lipa, Coldplay, Martin Garrix & Kygo, The Chainsmokers Style - Feeling Me\n\n🎵 All songs in this spotify playlist: https://spoti.fi/2TJ4Dyj\nSubmit..."), + )), + Video(VideoItem( id: "gNlOk0LXi5M", title: "Soll ich dir 1g GOLD schenken? oder JEMAND anderen DOPPELT?", length: Some(704), @@ -294,7 +302,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCqcWNPTUVATZt0Dlr2jV0Wg", name: "Mois", avatar: [ @@ -304,17 +312,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 days ago"), - view_count: 463834, + view_count: Some(463834), is_live: false, is_short: false, - short_description: "Je mehr Menschen mich abonnieren desto mehr Menschen werde ich glücklich machen \n\n24 std ab, viel Glück \n\nhttps://I-Clip.com/?sPartner=Mois", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("Je mehr Menschen mich abonnieren desto mehr Menschen werde ich glücklich machen \n\n24 std ab, viel Glück \n\nhttps://I-Clip.com/?sPartner=Mois"), + )), + Video(VideoItem( id: "dbMvZjs8Yc8", title: "Brad Pitt- Die Revanche eines Sexsymbols | Doku HD | ARTE", length: Some(3137), @@ -330,7 +339,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCsygZtQQSplGF6JA3XWvsdg", name: "Irgendwas mit ARTE und Kultur", avatar: [ @@ -340,17 +349,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 days ago"), - view_count: 293878, + view_count: Some(293878), is_live: false, is_short: false, - short_description: "Vom „People“-Magazin wurde er mehrfach zum „Sexiest Man Alive“ gekrönt. Aber sein Aussehen ist nicht alles: In 30 Jahren Karriere drehte Brad Pitt eine Vielzahl herausragender Filme....", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("Vom „People“-Magazin wurde er mehrfach zum „Sexiest Man Alive“ gekrönt. Aber sein Aussehen ist nicht alles: In 30 Jahren Karriere drehte Brad Pitt eine Vielzahl herausragender Filme...."), + )), + Video(VideoItem( id: "mFxi3lOAcFs", title: "Craziest Soviet Machines You Won\'t Believe Exist - Part 1", length: Some(1569), @@ -366,7 +376,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCkQO3QsgTpNTsOw6ujimT5Q", name: "BE AMAZED", avatar: [ @@ -376,17 +386,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 14056843, + view_count: Some(14056843), is_live: false, is_short: false, - short_description: "Coming up are some crazy Soviet-era machines you won\'t believe exist!\nPart 2: https://youtu.be/MBZVOJrhuHY\nSuggest a topic here to be turned into a video: http://bit.ly/2kwqhuh\nSubscribe for...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("Coming up are some crazy Soviet-era machines you won\'t believe exist!\nPart 2: https://youtu.be/MBZVOJrhuHY\nSuggest a topic here to be turned into a video: http://bit.ly/2kwqhuh\nSubscribe for..."), + )), + Video(VideoItem( id: "eu7ubm7g59E", title: "People Hated Me For Using This Slab", length: Some(1264), @@ -402,7 +413,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC6I0KzAD7uFTL1qzxyunkvA", name: "Blacktail Studio", avatar: [ @@ -412,17 +423,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 2845035, + view_count: Some(2845035), is_live: false, is_short: false, - short_description: "Some people were furious I used this slab, and I actually understand why. \nBlacktail bow tie jig (limited first run): https://www.blacktailstudio.com/bowtie-jig\nBlacktail epoxy table workshop:...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("Some people were furious I used this slab, and I actually understand why. \nBlacktail bow tie jig (limited first run): https://www.blacktailstudio.com/bowtie-jig\nBlacktail epoxy table workshop:..."), + )), + Video(VideoItem( id: "TRGHIN2PGIA", title: "Christian Bale Breaks Down His Most Iconic Characters | GQ", length: Some(1381), @@ -438,7 +450,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCsEukrAd64fqA7FjwkmZ_Dw", name: "GQ", avatar: [ @@ -448,17 +460,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("9 days ago"), - view_count: 8044465, + view_count: Some(8044465), is_live: false, is_short: false, - short_description: "Christian Bale breaks down a few of his most iconic characters from \'American Psycho,\' \'The Dark Knight\' Trilogy, \'The Fighter,\' \'The Machinist,\' \'The Big Short,\' \'Vice,\' \'Empire of the Sun,\'...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("Christian Bale breaks down a few of his most iconic characters from \'American Psycho,\' \'The Dark Knight\' Trilogy, \'The Fighter,\' \'The Machinist,\' \'The Big Short,\' \'Vice,\' \'Empire of the Sun,\'..."), + )), + Video(VideoItem( id: "w3tENzcssDU", title: "NFL Trick Plays But They Get Increasingly Higher IQ", length: Some(599), @@ -474,7 +487,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCJka5SDh36_N4pjJd69efkg", name: "Savage Brick Sports", avatar: [ @@ -484,17 +497,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 1172372, + view_count: Some(1172372), is_live: false, is_short: false, - short_description: "NFL Trick Plays But They Get Increasingly Higher IQ\nCredit to CoshReport for starting this trend.\n\n(if any of the links don\'t work, check most recent video)\nTalkSports Discord: https://discord.gg/n...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("NFL Trick Plays But They Get Increasingly Higher IQ\nCredit to CoshReport for starting this trend.\n\n(if any of the links don\'t work, check most recent video)\nTalkSports Discord: https://discord.gg/n..."), + )), + Video(VideoItem( id: "gUAd2XXzH7w", title: "⚓\u{fe0f}Found ABANDONED SHIP!!! Big CRUISE SHIP on a desert island☠\u{fe0f} Where did the people go?!?", length: Some(2949), @@ -510,7 +524,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UClUZos7yKYtrmr0-azaD8pw", name: "Kreosan English", avatar: [ @@ -520,17 +534,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 1883533, + view_count: Some(1883533), is_live: false, is_short: false, - short_description: "We are preparing a continuation of the cruise ship for you! Very soon you will be able to see the next part. If you would like to help us make a video:\n\n► Support us - https://www.patreon.com/k...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("We are preparing a continuation of the cruise ship for you! Very soon you will be able to see the next part. If you would like to help us make a video:\n\n► Support us - https://www.patreon.com/k..."), + )), + Video(VideoItem( id: "YpGjaJ1ettI", title: "[Working BGM] Comfortable music that makes you feel positive -- Morning Mood -- Daily Routine", length: Some(3651), @@ -546,7 +561,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCpxY9-3iB5Hyho31uBgzh7w", name: "Daily Routine", avatar: [ @@ -556,17 +571,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 1465389, + view_count: Some(1465389), is_live: false, is_short: false, - short_description: "Hello everyone. It\'s me again. I will stay at home and study . It\'s full of fun energy today, so it\'s ready to spread to everyone with hilarious music. 🔥🔥🔥\nHave fun together 😊😊😊...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("Hello everyone. It\'s me again. I will stay at home and study . It\'s full of fun energy today, so it\'s ready to spread to everyone with hilarious music. 🔥🔥🔥\nHave fun together 😊😊😊..."), + )), + Video(VideoItem( id: "rPAhFD8hKxQ", title: "Survival Camping 9ft/3m Under Snow - Giant Winter Bushcraft Shelter and Quinzee", length: Some(1301), @@ -582,7 +598,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCfpCQ89W9wjkHc8J_6eTbBg", name: "Outdoor Boys", avatar: [ @@ -592,17 +608,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 20488431, + view_count: Some(20488431), is_live: false, is_short: false, - short_description: "Solo winter camping and bushcraft 9 feet (3 meters) under the snow. I hiked high up into the mountains during a snow storm with 30 mph/48 kmh winds to build a deep snow bushcraft survival shelter...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("Solo winter camping and bushcraft 9 feet (3 meters) under the snow. I hiked high up into the mountains during a snow storm with 30 mph/48 kmh winds to build a deep snow bushcraft survival shelter..."), + )), + Video(VideoItem( id: "2rye4u-cCNk", title: "Pink Panther Fights Off Pests | 54 Minute Compilation | The Pink Panther Show", length: Some(3158), @@ -618,7 +635,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCFeUyPY6W8qX8w2o6oSiRmw", name: "Official Pink Panther", avatar: [ @@ -628,17 +645,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 months ago"), - view_count: 27357653, + view_count: Some(27357653), is_live: false, is_short: false, - short_description: "(1) Pink Pest Control\n(2) Pink-a-Boo\n(3) Little Beaux Pink\n(4) The Pink Package Plot\n(5) Come On In! The Water\'s Pink\n(6) Psychedelic Pink\n(7) Pink Posies\n(8) G.I. Pink\n\nThe Pink Panther is...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("(1) Pink Pest Control\n(2) Pink-a-Boo\n(3) Little Beaux Pink\n(4) The Pink Package Plot\n(5) Come On In! The Water\'s Pink\n(6) Psychedelic Pink\n(7) Pink Posies\n(8) G.I. Pink\n\nThe Pink Panther is..."), + )), + Video(VideoItem( id: "O0xAlfSaBNQ", title: "FC Nantes vs. SC Freiburg – Highlights & Tore | UEFA Europa League", length: Some(326), @@ -654,7 +672,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC8WYi3XQXsf-6FNvqoEvxag", name: "RTL Sport", avatar: [ @@ -664,17 +682,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 hours ago"), - view_count: 117395, + view_count: Some(117395), is_live: false, is_short: false, - short_description: "UEFA Europa League: https://www.rtlplus.com/shows/uefa-europa-league-19818?utm_source=youtube&utm_medium=editorial&utm_campaign=beschreibung&utm_term=rtlsport \nFC Nantes vs. SC Freiburg –...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("UEFA Europa League: https://www.rtlplus.com/shows/uefa-europa-league-19818?utm_source=youtube&utm_medium=editorial&utm_campaign=beschreibung&utm_term=rtlsport \nFC Nantes vs. SC Freiburg –..."), + )), + Video(VideoItem( id: "Mhs9Sbnw19o", title: "Dramatisches Duell: 400 Jahre altes Kästchen erzielt zig-fachen Wunschpreis! | Bares für Rares XXL", length: Some(744), @@ -690,7 +709,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC53bIpnef1pwAx69ERmmOLA", name: "Bares für Rares", avatar: [ @@ -700,17 +719,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 days ago"), - view_count: 836333, + view_count: Some(836333), is_live: false, is_short: false, - short_description: "Du hast Schätze im Keller, die du unseren Expert*innen präsentieren möchtest? Hier geht\'s zum Bewerbungsformular: kurz.zdf.de/lSJ/\n\nEin einmaliges Bieterduell treibt den Preis für dieses...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("Du hast Schätze im Keller, die du unseren Expert*innen präsentieren möchtest? Hier geht\'s zum Bewerbungsformular: kurz.zdf.de/lSJ/\n\nEin einmaliges Bieterduell treibt den Preis für dieses..."), + )), + Video(VideoItem( id: "Bzzp5Cay7DI", title: "Sweet Jazz - Cool autumn Bossa Nova & October Jazz Positive Mood", length: None, @@ -726,7 +746,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCoGlllJE7aYe_VzIGP3s_wA", name: "Smooth Jazz Music", avatar: [ @@ -736,17 +756,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 1216, - is_live: false, + view_count: Some(1216), + is_live: true, is_short: false, - short_description: "Sweet Jazz - Cool autumn Bossa Nova & October Jazz Positive Mood\nhttps://youtu.be/Bzzp5Cay7DI\n********************************************\nSounds available on: Jazz Bossa Nova\nOFFICIAL VIDEO:...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("Sweet Jazz - Cool autumn Bossa Nova & October Jazz Positive Mood\nhttps://youtu.be/Bzzp5Cay7DI\n********************************************\nSounds available on: Jazz Bossa Nova\nOFFICIAL VIDEO:..."), + )), + Video(VideoItem( id: "SlskTqc9CEc", title: "The Chick-Fil-A Full Menu Challenge", length: Some(613), @@ -762,7 +783,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCd1fLoVFooPeWqCEYVUJZqg", name: "Matt Stonie", avatar: [ @@ -772,17 +793,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 39286403, + view_count: Some(39286403), is_live: false, is_short: false, - short_description: "Good Video? Like/Fav & Share!!\n\nTBH this is really my 1st time trying Chick-Fil-A, legitimately. My verdict is torn, but that sauce is BOMB!\n\nChallenge\n+ Chick-Fil-A Deluxe\n+ Spicy Deluxe\n+...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("Good Video? Like/Fav & Share!!\n\nTBH this is really my 1st time trying Chick-Fil-A, legitimately. My verdict is torn, but that sauce is BOMB!\n\nChallenge\n+ Chick-Fil-A Deluxe\n+ Spicy Deluxe\n+..."), + )), + Video(VideoItem( id: "CwRvM2TfYbs", title: "Gentle healing music of health and to calm the nervous system, deep relaxation! Say Life Yes", length: None, @@ -798,7 +820,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC6jH5GNi0iOR17opA1Vowhw", name: "Lucid Dream", avatar: [ @@ -808,17 +830,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 1416, - is_live: false, + view_count: Some(1416), + is_live: true, is_short: false, - short_description: "🌿 Music for relaxation, meditation, study, reading, massage, spa or sleep. This music is ideal for dealing with anxiety, stress or insomnia as it promotes relaxation and helps eliminate...", - ), - SearchVideo( + is_upcoming: false, + short_description: Some("🌿 Music for relaxation, meditation, study, reading, massage, spa or sleep. This music is ideal for dealing with anxiety, stress or insomnia as it promotes relaxation and helps eliminate..."), + )), + Video(VideoItem( id: "7jz0pXSe_kI", title: "Craziest \"Fine...I\'ll Do it Myself\" Moments in Sports History (PART 2)", length: Some(1822), @@ -834,7 +857,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCd5hdemikI6GxwGKhJCwzww", name: "Highlight Reel", avatar: [ @@ -844,16 +867,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("10 months ago"), - view_count: 11601863, + view_count: Some(11601863), is_live: false, is_short: false, - short_description: "(PART 2) of 👉🏼 Craziest \"Fine...I\'ll Do It Myself\" Moments in Sports History \n\nBIBLE VERSE OF THE DAY: Luke 12:40", - ), + is_upcoming: false, + short_description: Some("(PART 2) of 👉🏼 Craziest \"Fine...I\'ll Do It Myself\" Moments in Sports History \n\nBIBLE VERSE OF THE DAY: Luke 12:40"), + )), ], ctoken: Some("4qmFsgKxAxIPRkV3aGF0X3RvX3dhdGNoGoADQ0RCNmxnSkhUWFpRYzJOVU1UUm1iME5OWjNOSmQzWjZOM0JPWlZWMldqZDFRVlp3ZEVOdGMwdEhXR3d3V0ROQ2FGb3lWbVpqTWpWb1kwaE9iMkl6VW1aamJWWnVZVmM1ZFZsWGQxTklNVlUwVDFSU1dXUXhUbXhXTTBaeVdsaGtSRkpGYkZCWk0yaDZWbXMxTlV4VmVGbE1XRnBSVlcxallVeFJRVUZhVnpSQlFWWldWRUZCUmtWU1VVRkNRVVZhUm1ReWFHaGtSamt3WWpFNU0xbFlVbXBoUVVGQ1FVRkZRa0ZCUVVKQlFVVkJRVUZGUWtGSFNrSkRRVUZUUlROQ2FGb3lWbVpqTWpWb1kwaE9iMkl6VW1aa1J6bHlXbGMwWVVWM2Ftb3hPRkJGT1dWSU5rRm9WVlpZWlVGTFNGaHVSMEp2ZDJsRmQycERObkZmUlRsbFNEWkJhRmRIZG1RMFMwaGxaMGhDTlZnMmJrMWxPVU5SU1VsTlVRJTNEJTNEmgIaYnJvd3NlLWZlZWRGRXdoYXRfdG9fd2F0Y2g%3D"), + endpoint: browse, ) diff --git a/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_cont.snap b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_cont.snap new file mode 100644 index 0000000..e620c02 --- /dev/null +++ b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_cont.snap @@ -0,0 +1,3111 @@ +--- +source: src/client/playlist.rs +expression: map_res.c +--- +Paginator( + count: None, + items: [ + PlaylistVideo( + id: "zMPIobcM2j0", + title: "ZUNA feat. AZET & NOIZY - NUMMER 1 prod. by DJ A-BOOM", + length: 212, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCUVzgKNBFY6In3YbZuWpZ60oilnQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBhueuErwTtigonAw2laaQQUAT4NA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAdl-Q1gh9d1d-usngNO-zMvUvx_g", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAoVRJ3fjDaqHcZRTZZFjjw3h4d9w", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCDLPHv0SrvyUzct8UYQ9R_g", + name: "KMNGANG", + ), + ), + PlaylistVideo( + id: "f9g6NCHQrcE", + title: "AZET ft. ZUNA & NOIZY - KRIMINELL (prod. by DJ A-BOOM)", + length: 230, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/f9g6NCHQrcE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAMGepmuIe_XAharqN6EnCXvp0xYw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/f9g6NCHQrcE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBzDe7LTk3WvQxRujhPMwEiXBz_Vw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/f9g6NCHQrcE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDqxi62N_SvOBaQzFIdn_cQ454UiQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/f9g6NCHQrcE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA7ZI4qgstve9cKsJ0WiVaDmPv3Mg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCDLPHv0SrvyUzct8UYQ9R_g", + name: "KMNGANG", + ), + ), + PlaylistVideo( + id: "CAVfEwrwT_o", + title: "Rooz x MoTrip - Immer Wieder (eng: Again and Again) (prod SOTT)", + length: 227, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/CAVfEwrwT_o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBUrGnudhiLRS7_j5qb_973rHrTMw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/CAVfEwrwT_o/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBNx43hsr8m7s-kUXox81a0WKLJig", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/CAVfEwrwT_o/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBQzL61jNNY6tkHfXmkTaGqOXWa7Q", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/CAVfEwrwT_o/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAwupB3QsRnYZFXDKcVcp3hlhHVYQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCDbDbm3v-MAqL4IPR2wIA9A", + name: "Hiphop.de", + ), + ), + PlaylistVideo( + id: "VUr9JZQ8F2g", + title: "Kontra K - Zwischen Himmel & Hölle (Official Video)", + length: 270, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/VUr9JZQ8F2g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB_wUNlasFg6HhHNUdiLvaGljPqRg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/VUr9JZQ8F2g/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA3JQ6GNQR_l-56Dp2CZkWXaz_6Ww", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/VUr9JZQ8F2g/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDw44Lg4YcD8fLqmeuJf-RbpWyf1A", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/VUr9JZQ8F2g/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC2LA5SRL1aXCK2c0LxT2VfWesYbw", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCIgCb1dYprH140Ds0mgeAUA", + name: "Kontra K", + ), + ), + PlaylistVideo( + id: "XQat6rNNbdQ", + title: "ZUNA - AYE prod. by LUCRY #KMNSTREET VOL. 7", + length: 220, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/XQat6rNNbdQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLALH-TVmccxyBnh-y3ShIBrdDw93g", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XQat6rNNbdQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDosyiHl_Py1cxk6OewlrR2nWk2YQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XQat6rNNbdQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBN5itLmYVnL5mRVeONPSSfDdf9Lg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XQat6rNNbdQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD0BPkYhJ2donQ3_zbZOm0jXliLYA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCDLPHv0SrvyUzct8UYQ9R_g", + name: "KMNGANG", + ), + ), + PlaylistVideo( + id: "EQyU6fGDn0c", + title: "RAF Camora - CORLEONE (prod. by X-Plosive,The Cratez & RAF Camora)", + length: 220, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/EQyU6fGDn0c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCZtiHGorHDDYBp-sPHB2MACq4XJg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/EQyU6fGDn0c/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAGMv_ScVyEbt7zhNB24dn4mJuhqA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/EQyU6fGDn0c/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLChqv1NE3-yiPhFMa9EwVd8gc9x4g", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/EQyU6fGDn0c/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBZSe5Cz0S4LG5mA9tsQNg-dwY4Qg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UChqcJ_MhP9a4bXy1jQ0QPzQ", + name: "RAF Camora", + ), + ), + PlaylistVideo( + id: "g4poKgQZX6w", + title: "Ufo361 - „BEVERLY HILLS“ (prod. von AT Beatz/Jimmy Torrio) [Official HD Video]", + length: 219, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/g4poKgQZX6w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBog509zw2F56xrdDsQkeRiuEC-xg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/g4poKgQZX6w/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAMTBvztqRlyZCUrAPHcuRir49-9w", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/g4poKgQZX6w/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBCE0c5CO99TxZCIo6YddaMvrnVFA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/g4poKgQZX6w/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCare0aMSSi52ESHefOv_ZPggGfIg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCXK2490SNd8EOm84Es6USjw", + name: "Stay High", + ), + ), + PlaylistVideo( + id: "YTHr7gxwYUQ", + title: "DARDAN X LUCIANO - AIRMAX GEGEN KOPF (prod. by Leryk)", + length: 167, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/YTHr7gxwYUQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgyAHaOHTo5EebRbB0J0b6nA_-aA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/YTHr7gxwYUQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAKCy0-YdNUXzR4HYei5mZmxeTdIQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/YTHr7gxwYUQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCxQqBeRSP0d_rHfQ6JumHuXRr9uw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/YTHr7gxwYUQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDP6A3n-4kU9fOmo1RQU43hSuw5cQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCqv9TYpXUAo-Qy_tOPPSUYg", + name: "Hypnotize Entertainment", + ), + ), + PlaylistVideo( + id: "MfCSDn6q6j4", + title: "YONII - DIRECTION prod. by LUCRY (Official 4K Video)", + length: 182, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/MfCSDn6q6j4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBEG2udEnlreWP8ezpx5j-1RpYrwg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/MfCSDn6q6j4/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCREemNFJkRzc2jPTEwSgg3O6lqiw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/MfCSDn6q6j4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLABAC_h0cQBGYojerhZ_ZFiZkzEEw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/MfCSDn6q6j4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDUEDo2ujFKcu7Q5u28a6zvk3IzrQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UC0udgVvsJRuH4WfuIuRPSiw", + name: "YONII OFFICIAL", + ), + ), + PlaylistVideo( + id: "gx9KFXb5x_o", + title: "Anstandslos & Durchgeknallt - Egal ft. Jasmiina (Official Video)", + length: 166, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/gx9KFXb5x_o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCQmzWXiU6YGpce9EAK0b1z2Y_QyQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/gx9KFXb5x_o/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD82uiRXRm4wYK_ZJ0oQBChSGdVGQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/gx9KFXb5x_o/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAcOJMBwcpsTcBQx6NSEWbRjg1O0w", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/gx9KFXb5x_o/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAkLFadbT6qWiaADQ8Q-g7aiYwIjQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCfiRDetbZHqjfVHOUz-kolw", + name: "Club Sounds", + ), + ), + PlaylistVideo( + id: "d7R7DQ5tlQo", + title: "RAF Camora - SAG NIX (Anthrazit RR) #02", + length: 205, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/d7R7DQ5tlQo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDeUBwyhvVq_h9-oRTQ82-tcP7cYg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/d7R7DQ5tlQo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-vCrXpeZOjOfrK2XpudNxay48DQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/d7R7DQ5tlQo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC7QH3B-4D8-k_F_uj1nfSDrLDy7Q", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/d7R7DQ5tlQo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA7DuaVyxSPjfZsWrRf3jN37L0dHg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UChqcJ_MhP9a4bXy1jQ0QPzQ", + name: "RAF Camora", + ), + ), + PlaylistVideo( + id: "cZPjgcqHSa8", + title: "Olexesh - BWA feat. Celo & Abdi, Hanybal (prod. von Drunken Masters) [Official Video]", + length: 294, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/cZPjgcqHSa8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDnL4R2RjYxajSHM2MYHHPIGSEbHg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/cZPjgcqHSa8/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBhb2FJVgj70AQt8voXxMkhCYqR0g", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/cZPjgcqHSa8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCmOidlL4UZ-QmLfWB8id6Bl8viuw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/cZPjgcqHSa8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDj0NDpHH4qdI93IaVHJSkZ99V8mg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCvnCXuh_zhm75EJ89qJ95Kw", + name: "385idéal", + ), + ), + PlaylistVideo( + id: "ogDLdREonWY", + title: "AZET - KETTEN CARTIER (Beat by zeeko & Veteran / prod. by DJ A-Boom)", + length: 198, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ogDLdREonWY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCE-WB-D8k22SnqNqjlGIv3PopaKA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ogDLdREonWY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBo8Lic2BX2rivIz4DQniLDmMx3gQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ogDLdREonWY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAFb9kShGX9bHchsOVwq4nmW2TZFA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ogDLdREonWY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB_XI-9gacT7HvFW088ZlyG3snsfg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCDLPHv0SrvyUzct8UYQ9R_g", + name: "KMNGANG", + ), + ), + PlaylistVideo( + id: "pRQpKprUUPY", + title: "Moe Phoenix - Ching Chang Chong (prod. by FL3X & Unik)", + length: 226, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/pRQpKprUUPY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC1RCyBcVxcI7USDT0EdCYwzsgYbQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/pRQpKprUUPY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAdjb7qKJ-JYk8KK1UXgi5IVYJKbw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/pRQpKprUUPY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAjpTHsjXkzXeeVdV4SkDPDikudNQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/pRQpKprUUPY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCkr-R-wWDlO4Afu5s6Nq9-8pQtFQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCAbiUl42boUt6vUL019r9Bw", + name: "LifeisPainTv", + ), + ), + PlaylistVideo( + id: "qZoQw9b4uCo", + title: "PAYY x ARDIAN BUJUPI - Handschellen (Prod. by Remoe & Kostas Karagiozidis) [ OFFICIAL VIDEO ]", + length: 221, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/qZoQw9b4uCo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_Yap-tgk3XSsxA3-WPIDbffMP5g", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/qZoQw9b4uCo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBuhNSvP4O4B8vrHmZc9tS9m_47Iw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/qZoQw9b4uCo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC7nqkSLI1YsQOfIhJMljdk3A6hPQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/qZoQw9b4uCo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCMPNfZVyyz8-r8IyLLd7Yn37t0JA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UC2p9dADVuX-faJJLX_tsqkQ", + name: "PAYY", + ), + ), + PlaylistVideo( + id: "q23qghoF6Nk", + title: "AZET - GJYNAH (beat by Lucry) (Official 4K Video)", + length: 271, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/q23qghoF6Nk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAon_vcMLc5GY3dZ857wU4_6sM7bQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/q23qghoF6Nk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBvafJwhZHbmRITRXYG91m7mcSz-A", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/q23qghoF6Nk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAlmFsviKx2FSq1zh2WREwgwnD7nA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/q23qghoF6Nk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCngctiXamXoTpLSNCUirBpgqUZUQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCDLPHv0SrvyUzct8UYQ9R_g", + name: "KMNGANG", + ), + ), + PlaylistVideo( + id: "yU0aKa7PFBg", + title: "Helene Fischer | Herzbeben (Live aus dem Kesselhaus München)", + length: 206, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/yU0aKa7PFBg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDmZE8ywbjxjg8l1xwMeSJzMj27Ng", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/yU0aKa7PFBg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLClNeYU_Qi8t6v1ZYtg7daO0etzEA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/yU0aKa7PFBg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCgK4mX9tLSYbIWGeQCUMJPPnFcAg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/yU0aKa7PFBg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCBNjBybL8MtpXPJGeSO8gq0nbIdg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCn3yU2bHX_8HMCfXOBTkXCg", + name: "Helene Fischer (Official)", + ), + ), + PlaylistVideo( + id: "DVCAqvypaCc", + title: "DARDAN - JUMP (prod. by Oster)", + length: 202, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/DVCAqvypaCc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDzU84UNl1l4W0cTdgmX9xthBVhHw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DVCAqvypaCc/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC0DO-ZmkxPOZhFABhpJ4Dqr5XbzQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DVCAqvypaCc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDxOey-aolRK_yqLceDRRpH14jPNg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DVCAqvypaCc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAdThetruX09fGIsHlohNTKmKhO3Q", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCqv9TYpXUAo-Qy_tOPPSUYg", + name: "Hypnotize Entertainment", + ), + ), + PlaylistVideo( + id: "XdnI7sm6LeQ", + title: "RAF Camora - Andere Liga (prod. Beataura & RAF Camora)", + length: 240, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/XdnI7sm6LeQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLALhffgTUDPZfO74mZauERCfDWLFw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XdnI7sm6LeQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDrLi28D9qPw03XRF7KNkPjFU2pBQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XdnI7sm6LeQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBXFXlnp7L_Jw9BKx1USCLc_TnqIg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XdnI7sm6LeQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAelda0gqmKy3F1DS9NgneqBKAZcw", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UChqcJ_MhP9a4bXy1jQ0QPzQ", + name: "RAF Camora", + ), + ), + PlaylistVideo( + id: "KcOXNSJtFLg", + title: "Sugar MMFK - Trikot von Paris (prod. by Penacho) [4K VIDEO]", + length: 255, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/KcOXNSJtFLg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBtf7BnKkQGWA9CJSEwH_-oYzka5w", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/KcOXNSJtFLg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC7gwv8WwxHbjRyLfGxMiiTmAnPvg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/KcOXNSJtFLg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDYE2hDZrMWbbC8F7cHvZ1BSxuOrw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/KcOXNSJtFLg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA4wietfPFHLII51B9lhSBPp0Zq1g", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCiro2LXCNF59XmHAyfql3Ew", + name: "Bantu Nation Channel", + ), + ), + PlaylistVideo( + id: "K0UxHXZwgsg", + title: "FLER ✖\u{fe0f}Pfirsich/Late Check-Out ✖\u{fe0f}► [ official Video ] prod. by Simes Add. Vocals by Mosenu", + length: 245, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/K0UxHXZwgsg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD1XTfZEJtsHmu1PYtlGFwz4bAiOw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/K0UxHXZwgsg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLACui7G6ROhrahCXYvLzSYzv9eD0Q", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/K0UxHXZwgsg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBx5uvx-lUTtZm1EwwomTD1klZRLw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/K0UxHXZwgsg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBbjoXq61G2OzEy3-Tr_apO7Tzqgw", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCLluoo0u8E-RI5zTNfe6o5A", + name: "FLER", + ), + ), + PlaylistVideo( + id: "eyyNwOSQ3Yg", + title: "MGP \"BAD BITCH\" (Official Video)", + length: 166, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/eyyNwOSQ3Yg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCrGr9LT69Q4tZzNwFIuUzoUAYwSQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/eyyNwOSQ3Yg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB2qG-CVHxgHMMAS5u-R1jh8UO6mw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/eyyNwOSQ3Yg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOAqVE0S3jbFA-zXKXdzXT4hbzHg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/eyyNwOSQ3Yg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBMq2kLvG8pnVoKWqnmqgaDbkkaAg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UC7VGRS1q1XzHsAm1uM1PQ_Q", + name: "MGP", + ), + ), + PlaylistVideo( + id: "1yskotqNuXI", + title: "RIN - Bros (prod. Minhtendo)", + length: 219, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/1yskotqNuXI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLABT4efReL1QrSECDJwROBI-pRCzw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1yskotqNuXI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCekSNFeIjFeC1i-92vumgoKkOJ_A", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1yskotqNuXI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAx7CPjCw-JKxZg9lewIvBlHVrVsg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1yskotqNuXI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDJxgbBYatgVF-dvNPaO8BR22Jj8w", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCmc5ha-rlBNVB1VDeUVisLw", + name: "DIVISION", + ), + ), + PlaylistVideo( + id: "C03n4AAiL9w", + title: "Glasperlenspiel - Geiles Leben (Lyric Video)", + length: 211, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/C03n4AAiL9w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCKvhEqesIgEalpxUZClNFcg65cig", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/C03n4AAiL9w/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCiNPDZVtzE1JbW7JvD40zb-B2bow", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/C03n4AAiL9w/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDSKTzzkWbJkqD2f_7dAspBoZog6Q", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/C03n4AAiL9w/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBhFPBbabEmCm2FMFWXDAZL9-gDAA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCorI9V6adKvuIYE7ey9HPQQ", + name: "Digster Pop", + ), + ), + PlaylistVideo( + id: "a2wNRTKRusM", + title: "Moe Phoenix - Mohammad (prod. by AriBeatz)", + length: 197, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/a2wNRTKRusM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBBKdUFUQEPrf091_3-GxUDfOuwzA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/a2wNRTKRusM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBU4JHEdx1GLRcStQA8eC-50ffgAg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/a2wNRTKRusM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDoCMFTDWYwKEctGzPv_26QOP2ctQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/a2wNRTKRusM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDAYcq3KaYb9-W5sgGuwjxqg7imIQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCAbiUl42boUt6vUL019r9Bw", + name: "LifeisPainTv", + ), + ), + PlaylistVideo( + id: "AIf61iHwWMQ", + title: "RAF Camora feat. UFO 361, GZUZ & Bonez MC - WAFFEN (Anthrazit RR) #07", + length: 268, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/AIf61iHwWMQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDOB2LLlsczwY-nRhzA0m4rzWF7yg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/AIf61iHwWMQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCcz1bkma3cggoRoqu9ODX7K2jvoQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/AIf61iHwWMQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBW28E7y8mPTz2bpj7kSQpMzhuNBA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/AIf61iHwWMQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBkWRuHbBTg9Hg46vRsNHM7NgIaCA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UChqcJ_MhP9a4bXy1jQ0QPzQ", + name: "RAF Camora", + ), + ), + PlaylistVideo( + id: "BixqbSRjY2Y", + title: "RAF Camora - ALLES PROBIERT feat. BONEZ MC (prod.by Beataura & RAF Camora)", + length: 319, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/BixqbSRjY2Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDrOaouRgB68UYhr338njl3BEVTdg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/BixqbSRjY2Y/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBt6nMyfc_vzQqJh7ThInN5D_83-Q", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/BixqbSRjY2Y/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDx1vCRa9A-pL6hw3pZA6PwZ3GCNQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/BixqbSRjY2Y/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAmOOT2CwSl85QDzkhXDZBD12QJ7A", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UChqcJ_MhP9a4bXy1jQ0QPzQ", + name: "RAF Camora", + ), + ), + PlaylistVideo( + id: "Acgy-3d4P6o", + title: "Kontra K - Erfolg ist kein Glück (Official Video)", + length: 226, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Acgy-3d4P6o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCBOvR8ORBuQ6zpDKCqfjS2CoAFvA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Acgy-3d4P6o/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBISe9JC5yaQZBvWbJuqgXO-m8dEg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Acgy-3d4P6o/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBWNJqhutsL2FyEBAC_IHdrebOhzA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Acgy-3d4P6o/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOOwb1WFjfacD5KxiSfL1WjBpugA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCIgCb1dYprH140Ds0mgeAUA", + name: "Kontra K", + ), + ), + PlaylistVideo( + id: "5M_yA9M7yNc", + title: "RAF Camora - GOTHAM CITY (Anthrazit RR) #03", + length: 156, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/5M_yA9M7yNc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCviCUA-ubhSSDyG7yt8Q1FEbCdtQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5M_yA9M7yNc/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCDEFhdP5q_KHJTM_F3ZCst4T28ig", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5M_yA9M7yNc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCyCJ569EEQv-dlt4mwWdBjiA0Gag", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5M_yA9M7yNc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCWtLTDbDeZZO41b9tBbuqPsSrwxQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UChqcJ_MhP9a4bXy1jQ0QPzQ", + name: "RAF Camora", + ), + ), + PlaylistVideo( + id: "PjJuezhos3U", + title: "Fard - \"LIEBE MACHT BLIND\" (Official Video) prod.by Abaz & X-Plosive", + length: 258, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/PjJuezhos3U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAulYAOlEdmCEOUhn3IQDk6lWuC5A", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/PjJuezhos3U/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC499x2PZvQ3sQ9pcLylcbq2PUW8w", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/PjJuezhos3U/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD0fOv4HPta82riXU7YKT9cdh8HBw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/PjJuezhos3U/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCeCcf9A6ZP31VcCrRoHEkD1g8lxQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCU920m2cTElVE62gZ84iqrQ", + name: "Fard", + ), + ), + PlaylistVideo( + id: "XMutaJI2-kc", + title: "18 Karat ✖\u{fe0f}• MAMA IST NICHT STOLZ •✖\u{fe0f} [ official Video ]", + length: 262, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/XMutaJI2-kc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCCJIA4Omo1CkTXkOzYVdNbP0Mkrw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XMutaJI2-kc/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDkib0bhaVP8e67Et7PxExfuwkrLA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XMutaJI2-kc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAK0KdCZvfXiEn_tjkdWN5ykl2BCw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XMutaJI2-kc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBprkJ4bIoC6SzCWd1R02TLA4OM5A", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCbDNCzgdLlvYY9dk5M8063A", + name: "BangerChannel", + ), + ), + PlaylistVideo( + id: "Xac6Q7hcZkQ", + title: "RIN - Monica Bellucci (prod. Alexis Troy)", + length: 228, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Xac6Q7hcZkQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDkwIz_hDDGLXX8i3uaKaWIl9ZH1Q", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Xac6Q7hcZkQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD2DYyACiQ8mLIVyirplceMpVQTnw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Xac6Q7hcZkQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDvCWuTEmZWqGOmr0wMdv-Nc45W1Q", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Xac6Q7hcZkQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCAD-W9JCZlIM9r2I3nco7XeAQ42g", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCmc5ha-rlBNVB1VDeUVisLw", + name: "DIVISION", + ), + ), + PlaylistVideo( + id: "JfwjsjBcDoU", + title: "Helene Fischer - Achterbahn", + length: 222, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/JfwjsjBcDoU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDMhxxaiLymi4ZQ3WvJpovkdQfqSQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/JfwjsjBcDoU/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBz0-gPSLQoTp_vUnecGrEdZbPScg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/JfwjsjBcDoU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAD05pV1vso8dteDc04ldzp29dqcA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/JfwjsjBcDoU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBl-j3JeOJJrQFzb_5rX7wgeqbJxQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCn3yU2bHX_8HMCfXOBTkXCg", + name: "Helene Fischer (Official)", + ), + ), + PlaylistVideo( + id: "zshiQUV3ohw", + title: "MOE PHOENIX feat. VEYSEL - GAUNER (prod. by Ghana Beats)", + length: 226, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/zshiQUV3ohw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAqPtA9IBm0Dp_o89aj1F18oYvRnw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/zshiQUV3ohw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDBdB9lnuis16jFRv15Gc0bUe71Ug", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/zshiQUV3ohw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCmoGm1k9xAb6S1Kzdaz77b4mbTTg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/zshiQUV3ohw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBVxe7whEBebIVVACSApLWsnitDMA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCAbiUl42boUt6vUL019r9Bw", + name: "LifeisPainTv", + ), + ), + PlaylistVideo( + id: "g1eTAt1_VAM", + title: "Nimo - HYPE feat. Celo & Abdi (prod. von Matveï) [Official 4K Video]", + length: 303, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/g1eTAt1_VAM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBuGSL6ChVGrfHZvlpcgOnkQmDnkg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/g1eTAt1_VAM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_tC-fs_M8zMStMZhwyFLZ4vURMw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/g1eTAt1_VAM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAtKK4Ac2RDWJ50aqCmfnfHWxtHBQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/g1eTAt1_VAM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLApU6MqRttnrz_OCq_IicIUFIlE3A", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCvnCXuh_zhm75EJ89qJ95Kw", + name: "385idéal", + ), + ), + PlaylistVideo( + id: "c3rLrFC8igY", + title: "Dame - Auf die guten alten Zeiten [Official HD Video]", + length: 252, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/c3rLrFC8igY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC8th_cJuzgJBvTHkU0F7_1o_EeSg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/c3rLrFC8igY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC6jZzNSOqiRb7tYHVlYDdvPagz0Q", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/c3rLrFC8igY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDJy15I-6Ln2vlHq52btWvzSxrQgQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/c3rLrFC8igY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCakhPo-3n3KOEMHFS47VMfQMPQdA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCjXt6co1pkPxBRY2FkH2YwQ", + name: "Damestream Records", + ), + ), + PlaylistVideo( + id: "1im4DNEYzEM", + title: "Gzuz - Optimal (Jambeatz)", + length: 209, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/1im4DNEYzEM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCK7w05DebTnm9tXPT2AF4BYZQkpg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1im4DNEYzEM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDRmSY6Se210dAveiJFWqaZh3Ll3g", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1im4DNEYzEM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDV5P3L-vcOyNA2ox2AVEX-zvSIig", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1im4DNEYzEM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDE401pvTHn0_fw9M19UR9YqCVTCw", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCGh8tmH9x9njaI2mXfh2fyg", + name: "CrhymeTV", + ), + ), + PlaylistVideo( + id: "8BUxw9ocM2s", + title: "EULE aka Jazzy Gudd - Stehaufmädchen (Official Video)", + length: 184, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/8BUxw9ocM2s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD07FNMfJFNvAE1cQaM6d0TKN3thA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/8BUxw9ocM2s/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCROqTcS1nxiVoWk2FekcAotO9g6w", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/8BUxw9ocM2s/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBBaJh8s_5BeYwlUNNDH9aWkB52Aw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/8BUxw9ocM2s/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBg09rMWtPSDybzdHqiINh76JjB5Q", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCO8_DFkr_fn_YDup_7OZNow", + name: "El Cartel Music", + ), + ), + PlaylistVideo( + id: "g4cSpnGbHPE", + title: "CAPITAL BRA & KING KHALIL - ZWEISTELLIGE HAFTSTRAFEN (PROD. SAVEN MUSIQ)", + length: 201, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/g4cSpnGbHPE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAxbM8Us6Xq4TC42SgIawdzsI5kBw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/g4cSpnGbHPE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAavp2izEfHTcaJxdVfkhgaA8h7MA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/g4cSpnGbHPE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCMKNei26RcrCVe8Si2l8lJVm0iCg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/g4cSpnGbHPE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLADSLy-UNKmodAC1CgdW4zNs0qvgA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCGU9EqK5V5m141sNPCOfRBg", + name: "TEAM KUKU", + ), + ), + PlaylistVideo( + id: "1Sdj9MiCowQ", + title: "187 Strassenbande - 10 Jahre (Jambeatz)", + length: 296, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/1Sdj9MiCowQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBiHVp4uTcgnNiLXVp8txVAsQLRRg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1Sdj9MiCowQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDGLCp7AlMGH_fX-eRdPowoA0uKdA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1Sdj9MiCowQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDTK7_hhsEClc3GfQvT_UspyUXKKA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1Sdj9MiCowQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC3n4rISh6jhYf3loVL9s0_4wsD8A", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCGh8tmH9x9njaI2mXfh2fyg", + name: "CrhymeTV", + ), + ), + PlaylistVideo( + id: "2DbR35g-0ZY", + title: "Ufo361 - \"DER PATE\" (prod. von Broke Boys) [Official HD Video]", + length: 237, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/2DbR35g-0ZY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5oyx0LTAyq3KN833dpoMqO0pPlQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/2DbR35g-0ZY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDBF4KWSmY3YhpNdUd38dx2WIsTJQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/2DbR35g-0ZY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDHAtZj8S4eJrW97GAa_79KbZwDLw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/2DbR35g-0ZY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDMF9z3GuaV8Wm7GnoZQp-lBwMtRQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCXK2490SNd8EOm84Es6USjw", + name: "Stay High", + ), + ), + PlaylistVideo( + id: "j09hpp3AxIE", + title: "Die Toten Hosen // „Tage wie diese\" [Offizielles Musikvideo]", + length: 272, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/j09hpp3AxIE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD9AYFv29sGfmmdT8U1dqKUjY5ALw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/j09hpp3AxIE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBoVt_K_kR3Wqnu3uY-0CfIFsqI5g", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/j09hpp3AxIE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBgbwYa3tZQTVwDdmQmKXjK6R_tOg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/j09hpp3AxIE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCgKX0gdlgg-me5svwpGKOF0wSnhg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCzQaHdbeofGzUvzUsLyvUIg", + name: "DIE TOTEN HOSEN", + ), + ), + PlaylistVideo( + id: "J3GN6JXjV3g", + title: "Wincent Weiss - Frische Luft", + length: 200, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/J3GN6JXjV3g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB66Ro2vGeZvHM0dnqbT6HVGtuQNA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/J3GN6JXjV3g/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLChuTf_62NHpRM1pHpWqPF0PTRrkQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/J3GN6JXjV3g/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDUt6y_GA5SDhXp2PSA9vFkHh4zxA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/J3GN6JXjV3g/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD073aeCaiK-BeCkeKAbhBlsH3efw", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCorI9V6adKvuIYE7ey9HPQQ", + name: "Digster Pop", + ), + ), + PlaylistVideo( + id: "pULl-p02upM", + title: "Eunique ► CHECK (feat. Xatar) ◄ music by Lucry / prod. by Michael Jackson [Official Video]", + length: 240, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/pULl-p02upM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAjH5lXg2mtjBxznFQpauBgpZ6S5g", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/pULl-p02upM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDMU-ELlxEmVaSmFT-2I00DehmJUg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/pULl-p02upM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDa-VQPJ4BRVXaGbFGsw9v4F7yCLg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/pULl-p02upM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCcEvofW-6YGxRzEpCauBhESXgYnw", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCppb1MUh0f5CSRGiae_LnUg", + name: "Eunique", + ), + ), + PlaylistVideo( + id: "O6By8JeCtQQ", + title: "KING KHALIL FT. CELO & ABDI - ALLES RICHTIG SO (PROD.BY THE CRATEZ)", + length: 210, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/O6By8JeCtQQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBeEDlx_Qtv47nY5CUFqHFv3eJAJQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/O6By8JeCtQQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD9XtlB8ut2iILOVLd3M0rIzhIUmA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/O6By8JeCtQQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD4y-pw1KBn0TWF9209HxAQNIY2nA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/O6By8JeCtQQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDePCzXlWlEhuM8LN6WDPsjXufiZA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCGU9EqK5V5m141sNPCOfRBg", + name: "TEAM KUKU", + ), + ), + PlaylistVideo( + id: "NGn3IYQ7M7E", + title: "LUCIANO - VORANKOMMEN (prod. by Chryziz Beats)", + length: 228, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/NGn3IYQ7M7E/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB52YZY551SNIySzi-d8PMMx5p4qA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/NGn3IYQ7M7E/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDDCvYKjoVly2kAhrhrYRg7hVBlDg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/NGn3IYQ7M7E/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDp2-6UoAxdt53NXq78ZpqFTZagRA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/NGn3IYQ7M7E/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCXw0EQ0nmeV6J9rwL2X_Syz1xsww", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCVWm9bTQLmMwHI0To5zQFGA", + name: "Luciano | Locosquad", + ), + ), + PlaylistVideo( + id: "o43oI5x86dI", + title: "Gzuz feat. LX- Schnapp! (prod. P.M.B.)", + length: 166, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/o43oI5x86dI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDeGB5wc8URrV5zjwsfhU2-lAd2Bg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/o43oI5x86dI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBNtFNGR5wigKm9UuQ7aob3tZRl-A", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/o43oI5x86dI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBMYDaAcm-sitD3162nkda25nL6MQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/o43oI5x86dI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA2k8bNzUtef-BB9-_9ilOhn1DkAA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCGh8tmH9x9njaI2mXfh2fyg", + name: "CrhymeTV", + ), + ), + PlaylistVideo( + id: "7TNqUrINxzs", + title: "Veysel - Besser als 50 Cent (OFFICIAL HD VIDEO) prod. by Fonty", + length: 197, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/7TNqUrINxzs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDGpJi_1puIgwODMepICvhX3qrmvw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/7TNqUrINxzs/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDBAWRSI7-fmh4ZH1Bt-lPsTdqd3g", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/7TNqUrINxzs/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC6_7cINuLKG9gOnTWNwNgeD4CvVA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/7TNqUrINxzs/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDUGswCcwmnKC1uiPQvi8XVqE_4Gw", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UChgBqZLsIzN4gKSLfKoavEQ", + name: "43 TV", + ), + ), + PlaylistVideo( + id: "f3BD5Zm3cp0", + title: "BONEZ MC & RAF CAMORA - PALMEN AUS GOLD", + length: 231, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/f3BD5Zm3cp0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDrTx5VwXz29kwhWDvtUqUsMl832Q", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/f3BD5Zm3cp0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgPUym7Sk2juqtgjzoF8fK5u2OQw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/f3BD5Zm3cp0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAVQBAAluiG7-3pxvOGxY4WLKj81g", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/f3BD5Zm3cp0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC8so0sOygWVySuZvJGZ7M_mUhtqg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCGh8tmH9x9njaI2mXfh2fyg", + name: "CrhymeTV", + ), + ), + PlaylistVideo( + id: "sF4yTDp95Eo", + title: "YONII - LAMPEDUSA prod. by LUCRY (Official 4K Video)", + length: 203, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/sF4yTDp95Eo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBvg9CIthGa9KJrDHLjeZjkDegElw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/sF4yTDp95Eo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDNrqHszy-mQ1ZKNVZtSOjX6CVCbw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/sF4yTDp95Eo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAAzx1IUi2RqUEbQT5c9hiSTYvYRA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/sF4yTDp95Eo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA3SFYtaHpwBsZgD01aZxwOGN0qag", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UC0udgVvsJRuH4WfuIuRPSiw", + name: "YONII OFFICIAL", + ), + ), + PlaylistVideo( + id: "1EwLNHg6ejY", + title: "Mert ft. SOOLKING - AJAJAJ (prod. by ARIBEATZ)", + length: 224, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/1EwLNHg6ejY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBxADlCvmeGhe-SPNkvZcVQk7wu4g", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1EwLNHg6ejY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCgkkeXo9F6pwClN82vaxcSGEr9Rg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1EwLNHg6ejY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDelQQo1iLDvAkTnuc0_vsXDxQAVw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1EwLNHg6ejY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAM4nRVYrhPwrkex40YGl2u-nfskw", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UC8C5H2N06dasx3ZYYbAa0mQ", + name: "Mert Abi", + ), + ), + PlaylistVideo( + id: "-l75qaSDWe8", + title: "SXTN - Bongzimmer (Official Video)", + length: 287, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/-l75qaSDWe8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCMJGvaVHhQX1wQsr-3Kd2djDVIRQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/-l75qaSDWe8/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC8wjzexE2vm0Q-4w08Lfo0WrN45w", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/-l75qaSDWe8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAbbuG6moLuVHHrS7Xz5IJkStKbtw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/-l75qaSDWe8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC7BD5u46QSBz9dazR8IxrgXrMCxg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UC6j8VYM3rsQkx3-22Cg5ZUg", + name: "SXTN", + ), + ), + PlaylistVideo( + id: "7h7ntYLLrfQ", + title: "Mark Forster - Kogong", + length: 223, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/7h7ntYLLrfQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAtAzQLSNQvigkTqhdfBgz8WSOyTA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/7h7ntYLLrfQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAL1s14MBkqNw35AuoQz2D5T9K9LA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/7h7ntYLLrfQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBlkMO-kWtfl3PVtnVrJHchOcpeFw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/7h7ntYLLrfQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLALsUNSuTe_BCDdAHLA3FiiWvmSow", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCLyAYe-pk6HGmfyT94ouBcA", + name: "Mark Forster", + ), + ), + PlaylistVideo( + id: "ApUl3Ops69M", + title: "AZET - FAST LIFE (prod. by m3) #KMNSTREET VOL. 1", + length: 179, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ApUl3Ops69M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDb2436I_Kp7y4gMe6w7nh_DN0F2Q", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ApUl3Ops69M/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCxdCibsB26fKYqmW935fCEeDiz6w", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ApUl3Ops69M/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAbuFzP6z55UhSNj8dbhHjAxvCL5A", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ApUl3Ops69M/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAverCYnN4trpm2aQMBrJ7zUTs6OA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCDLPHv0SrvyUzct8UYQ9R_g", + name: "KMNGANG", + ), + ), + PlaylistVideo( + id: "2YcJ8Wightw", + title: "GZUZ - CL500 (Jambeatz)", + length: 152, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/2YcJ8Wightw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBafY_AaRX5vaAIfpdctKTL8ZbUqQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/2YcJ8Wightw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD5ofjFtnV_WFEpdcUIrA_dqavbzA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/2YcJ8Wightw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBKqs83Mks536ox1N0Lm4zyC5OMSw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/2YcJ8Wightw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDOCPqu_-YWqcCrbynJDunYTmOgUQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCGh8tmH9x9njaI2mXfh2fyg", + name: "CrhymeTV", + ), + ), + PlaylistVideo( + id: "W3q8Od5qJio", + title: "Rammstein - Du Hast (Official Video)", + length: 236, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/W3q8Od5qJio/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy8BHWAiUz5cUmZdLkDTTIS7w5bA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/W3q8Od5qJio/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB6KPKUyxG8CFrG6VRIYmSwAG1hVQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/W3q8Od5qJio/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCJfB3AA7iXPAhLJxx3AIOZqlhZMQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/W3q8Od5qJio/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAWP3F-KJTcX2jCq6h0wuj_z0IxIg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCYp3rk70ACGXQ4gFAiMr1SQ", + name: "Rammstein Official", + ), + ), + PlaylistVideo( + id: "WPFLAjmWCtk", + title: "SIDO - Astronaut (feat. Andreas Bourani) OFFICIAL VIDEO", + length: 268, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/WPFLAjmWCtk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBA6n25WXYSKiK6KbfsZk-monR1BQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/WPFLAjmWCtk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA1SbB4pIUQ4OTXJRdeFXTYh6lrDQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/WPFLAjmWCtk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAwKJXoLpelP1QCWpPYQlZKpivtow", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/WPFLAjmWCtk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAxqmZJUln9VAnXr46-H0e0XyrCug", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UChl3h_bqcx_c15f7WOtSn-A", + name: "Sido", + ), + ), + PlaylistVideo( + id: "tC76tIp0kBk", + title: "MoTrip - So wie du bist (feat. Lary)", + length: 312, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/tC76tIp0kBk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBCSXdft-cKXNbKDFWX-UBvjgjeOQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/tC76tIp0kBk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCxd9kc9329HY_KJc4Sr1ULTULKZg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/tC76tIp0kBk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAHaM9N-cXkD-bpg7yCg0GlnezdEw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/tC76tIp0kBk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOotD_L08R0C5yEqAJBaVp9vvsbA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCeXXPfmDyQFJVB-6_Kl04sg", + name: "STOKED Music", + ), + ), + PlaylistVideo( + id: "kiMG_JV2gbo", + title: "Adel Tawil \"Lieder\" (Official Lyrics Video)", + length: 230, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/kiMG_JV2gbo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDuETow7IpKT30ZdSsh-9L6ns1Uww", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kiMG_JV2gbo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgMoqRgXn7pJHxlaVvfT0cuzogBA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kiMG_JV2gbo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDfVPpS7QQlQLpXm66v0OkwLl-mYw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kiMG_JV2gbo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCAf4lZHLNpV0Q7WYnrSGxnoRa_Eg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCSRCm4zHuETCS7jHWMiWNog", + name: "Adel Tawil", + ), + ), + PlaylistVideo( + id: "CrYYg_atdtk", + title: "Marteria, Yasha, Miss Platnum - Lila Wolken (Official Video)", + length: 231, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/CrYYg_atdtk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB_8mGL48FutWtNIFldaMsVmhlhnw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/CrYYg_atdtk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC1XfSKRQQHyh_fMsK2MXE6NiLHgg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/CrYYg_atdtk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDDKUL4e0Igh1xacfSqCvuiexlHxw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/CrYYg_atdtk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCoTVROjGNhh8fjfLZgnyKa5-8xBA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCicJjripVxiTXbUfociVZwQ", + name: "MARTERIA", + ), + ), + PlaylistVideo( + id: "XTPGpBBwt1w", + title: "K.I.Z. - Hurra die Welt geht unter ft. Henning May (Official Video)", + length: 299, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/XTPGpBBwt1w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAcYXhOsrGetd_0wuibgBFV7YBnIg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XTPGpBBwt1w/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCoW4-qiDzeTCvkOJi_6NEsWN3BDg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XTPGpBBwt1w/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDvamrOXtP_i8N6x_tTuxBiLosXfQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XTPGpBBwt1w/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBFaeTxfvLQ70K-hKGGu64rZiv7VQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCy9Nbtsu7QzefrNsT9nYkzQ", + name: "K.I.Z", + ), + ), + PlaylistVideo( + id: "uC08L4xxjNM", + title: "Max Giesinger - 80 Millionen (Offizielles Video)", + length: 257, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/uC08L4xxjNM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAOc-MPZ_rsmax81mL3f8AgLsX90Q", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/uC08L4xxjNM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDyMQ57Ob-g2-ttuAWjd1KM9qUJQw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/uC08L4xxjNM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDvh0TuJoX6KTcHBlCioz_lKWzPkg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/uC08L4xxjNM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDlBiTiqVUxkw-Fgu-NXHPkJZkH1w", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCZygMGbIE8JNE1_qqtmIXhA", + name: "Max Giesinger", + ), + ), + PlaylistVideo( + id: "5fAoV_AAMf0", + title: "Mark Forster - Bauch und Kopf (Videoclip)", + length: 257, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/5fAoV_AAMf0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDfOpErDWIsYZ61_NlNduG5z2W5Cg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5fAoV_AAMf0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA0Sz_QbrRwaF6ZH4zhN-KEHJuA7w", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5fAoV_AAMf0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDbSBt8PyK_J7dRHihyyKck4lBFPA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5fAoV_AAMf0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDId9r9ezc4eHh9wq-WF_ebhOtCPw", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCLyAYe-pk6HGmfyT94ouBcA", + name: "Mark Forster", + ), + ), + PlaylistVideo( + id: "u5Vz7obL460", + title: "Tim Bendzko - Keine Maschine (Offizielles Video)", + length: 202, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/u5Vz7obL460/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBBUhjoBjfVBzy7k9bgwicb4in_wQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/u5Vz7obL460/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAlOQ6jKtwyqi23kK-xDfvtPIS2FA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/u5Vz7obL460/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAGsQd4aym_klv6mbs4H2ZlpQivMw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/u5Vz7obL460/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAHcirsr7eVve_M--FkOKQMsrmpMg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCGexINHKQhnkwmMaympciYQ", + name: "Tim Bendzko", + ), + ), + PlaylistVideo( + id: "ZPJlyRv_IGI", + title: "Deichkind - Leider Geil (Official Video)", + length: 189, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ZPJlyRv_IGI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-VCnGYvXMSkYOdKLReH9Dlt8G_A", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ZPJlyRv_IGI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDx3-52kBAq42Ml5ii2kzro4SddEw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ZPJlyRv_IGI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA0UkCccWJ39n-zOI7_MJ2E70A93g", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ZPJlyRv_IGI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCriEeGUvlt167aWvm4S85eKNge3A", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCT7MCko43YqeZ1x55O1DRtw", + name: "deichkindTV", + ), + ), + PlaylistVideo( + id: "s2SLbln-JwE", + title: "BIBI & TINA \" Jungs gegen Mädchen - MÄDCHEN GEGEN JUNGS - Das offizielle Video!", + length: 172, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/s2SLbln-JwE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDURk566C-Rh1vwMamXVandCsnDvQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/s2SLbln-JwE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCj0LYVSPtFOs3k-VBN2ydK0OjqYA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/s2SLbln-JwE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAUbbNiYKOamcyXbN75E3J48IWpfA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/s2SLbln-JwE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLALI7CIeS2ihuVQa99T8VJriVE31Q", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCqsyOBd31LT-EwwqiSBKxSA", + name: "pop-out Musik", + ), + ), + PlaylistVideo( + id: "28xHtRw6pG8", + title: "AZET - PATTE FLIESST prod. by LUCRY #KMNSTREET VOL. 5", + length: 206, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/28xHtRw6pG8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAZB8XpsXloeCqWZpyZt8YNvV2IxQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/28xHtRw6pG8/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLByGHZTW-56b-68ykLlGVm3fqMgKA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/28xHtRw6pG8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAWm5FxDbxYAuYs-bRC6nswuazk2Q", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/28xHtRw6pG8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDqTMpQ2SJKWMVJLccpClzjf5LEfg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCDLPHv0SrvyUzct8UYQ9R_g", + name: "KMNGANG", + ), + ), + PlaylistVideo( + id: "joWoKqUTRvc", + title: "KC Rebell ► ALLES & NICHTS ◄ [ official Video ]", + length: 204, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/joWoKqUTRvc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDAwlxydPxzE_jwb1rNbqmjdMEEoQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/joWoKqUTRvc/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYdFy7yZNP3yyiU6YmizSbc9NS4Q", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/joWoKqUTRvc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDRGF2lfTmr5to2ycGViYF1p2Deuw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/joWoKqUTRvc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOMKJIbXEbKP6p020aS5Y6g0yUOw", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCbDNCzgdLlvYY9dk5M8063A", + name: "BangerChannel", + ), + ), + PlaylistVideo( + id: "XNMFTqhcNrE", + title: "Mark Forster - Flash mich (Videoclip)", + length: 236, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/XNMFTqhcNrE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBTr_B4ekTBT9hupTStE4MOf52PVw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XNMFTqhcNrE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBOb_mlHN11ZM6gjN5Cs1DfuNJqqA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XNMFTqhcNrE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCHdzgKixy4dteQkMdsgV6Sp2Reaw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XNMFTqhcNrE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB07YyJvm-AqiXzZ56bhK-oeJX2JQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCLyAYe-pk6HGmfyT94ouBcA", + name: "Mark Forster", + ), + ), + PlaylistVideo( + id: "v3vPLgJ9FX8", + title: "Cheat Codes - Sex (Official Video)", + length: 260, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/v3vPLgJ9FX8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA_hmNsTwTENDy4Bjh6gh__yW3GIQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/v3vPLgJ9FX8/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCFdmnJuEDwpOHr3KbAMRnNiRvcCw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/v3vPLgJ9FX8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCB4QCoMRrqZz_pMGWTbx53L2Y4iQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/v3vPLgJ9FX8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD0-N0Qt6W2wWnNDhwE1CqsdNiRCQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCorI9V6adKvuIYE7ey9HPQQ", + name: "Digster Pop", + ), + ), + PlaylistVideo( + id: "UFXOd179kOA", + title: "GZUZ - EBBE & FLUT (mit Xatar & Hanybal)", + length: 213, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/UFXOd179kOA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-tY05WssNwj08bjU_P1qVrXP3Ag", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/UFXOd179kOA/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCSxsqrHWJ1s6IbZnximV8Hh4buMg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/UFXOd179kOA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCqVBIJtpI50z3UnSkNmU4Hi22Uxg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/UFXOd179kOA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAUdSTfnPotVexE_VQlhcC1Yrm8tQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCGh8tmH9x9njaI2mXfh2fyg", + name: "CrhymeTV", + ), + ), + PlaylistVideo( + id: "4xRsDnKgHZc", + title: "ZUNA feat. NIMO - HOL MIR DEIN COUSIN (Official 4K Video)", + length: 206, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/4xRsDnKgHZc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD2YQRMQrDjFZXKHm-HPOKNZY-kmw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/4xRsDnKgHZc/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCMV3cXzrg0dDviaEUv64tmd_-zfg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/4xRsDnKgHZc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCfP0mBjn0ShUJ41_pgbK0l7g9_MA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/4xRsDnKgHZc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCtQUyoYbOqcpjuQOmNQs8vsYfcdQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCDLPHv0SrvyUzct8UYQ9R_g", + name: "KMNGANG", + ), + ), + PlaylistVideo( + id: "mE3IjoEqMqY", + title: "Hanybal - VANILLA SKY mit Nimo (prod. von Lucry) [Official 4K Video]", + length: 211, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/mE3IjoEqMqY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLARArW0ieGDVRQ4Qhp8JWepnfeDtg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/mE3IjoEqMqY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDISme6LUIVxd926q2h1sKr0IR6Dg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/mE3IjoEqMqY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBJEEEtA9CAVUImBmynrbtuPovYfg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/mE3IjoEqMqY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDNp1KqFQu5CWcimfAcAoZFBmltHg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCnH4k3ASwytYAgfsW83OvTg", + name: "Azzlackz", + ), + ), + PlaylistVideo( + id: "E7e5vxKerqA", + title: "DARDAN FT. ENO - WER MACHT PARA? (Official Video)", + length: 195, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/E7e5vxKerqA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYmNJ23r8Y5wE4xpfNz2ms6i3omw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/E7e5vxKerqA/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDyBEWHv4eWRJ5c8SaT6APgEt7tsQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/E7e5vxKerqA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAU8nd7t-mD9P2pqUllCZ6ZyVqhKw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/E7e5vxKerqA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB214eeOABXYb4pv0LZsGjlWTufOw", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCqv9TYpXUAo-Qy_tOPPSUYg", + name: "Hypnotize Entertainment", + ), + ), + PlaylistVideo( + id: "axmZ_5Rx4Go", + title: "Adel Tawil \"Zuhause\" (Official Music Video)", + length: 210, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/axmZ_5Rx4Go/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDh0E0WIHz_QeECpxh9OcCQgP80Tw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/axmZ_5Rx4Go/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCU9Dy7l9OuqkQa_qALB9clpQR2hg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/axmZ_5Rx4Go/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLByjwa1up0v2EOteR749rQlgOtSkg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/axmZ_5Rx4Go/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDnzqkrMrtaDfJgBTpeXVlAhJjp_w", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCSRCm4zHuETCS7jHWMiWNog", + name: "Adel Tawil", + ), + ), + PlaylistVideo( + id: "44Ig6BsOCYA", + title: "Olexesh - PURPLE HAZE (Offizielles Video)", + length: 279, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/44Ig6BsOCYA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDAwH-0B_Aadbi2O9ba4EJUr3kyCA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/44Ig6BsOCYA/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDFm0-HZJplSq6ajysNaDJnLf8Skw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/44Ig6BsOCYA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCYfzxCneIrbK2K6exRkv2BkpACyA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/44Ig6BsOCYA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBRY1YKUgSi9O2Zy-TKToPdwTd8VA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCvnCXuh_zhm75EJ89qJ95Kw", + name: "385idéal", + ), + ), + PlaylistVideo( + id: "3iLBFEJjdN0", + title: "SIDO - Löwenzahn feat. Olexesh (prod. by DJ Desue & x-plosive)", + length: 242, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/3iLBFEJjdN0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA2pjLj4MppP5puOVVw960xZHlEZQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/3iLBFEJjdN0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB3jmO1P61K0DyiquTLwwzZPa-klw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/3iLBFEJjdN0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB748MZul1DjMIf8xs2umCAwTRpdQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/3iLBFEJjdN0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA94Pt89BYfQZCXPRDUu-pySiogRQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UChl3h_bqcx_c15f7WOtSn-A", + name: "Sido", + ), + ), + PlaylistVideo( + id: "M-ncq2eHF_k", + title: "Philipp Poisel - Ich will nur (Offizielles Video)", + length: 233, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/M-ncq2eHF_k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDbtYmxd63hnsRbe3Sgr6IEtxaKXg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/M-ncq2eHF_k/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDrLPBKWmCzI0zHFAMGq4b4zE-Lzw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/M-ncq2eHF_k/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDJTW2qqZPF0SQuLhcQOG0ZtfQRYA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/M-ncq2eHF_k/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCj3wbDOlchsRjnjNBTNN_fQCnfjg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UC8OZsdWmGCM-vojiQmtUK8g", + name: "groenlandrecords", + ), + ), + PlaylistVideo( + id: "-AJoJ-ggiKI", + title: "LX & Maxwell feat. Gzuz - HaifischNikez (Jambeatz)", + length: 215, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/-AJoJ-ggiKI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDcSPvvf03RP2Q6cd3h3G2Zz42XMQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/-AJoJ-ggiKI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDk4OfQ_aikPeX9jsDRfnGmTcs6LQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/-AJoJ-ggiKI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDbNdI9J2b6GaiJdfkUVbU1bL5kwA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/-AJoJ-ggiKI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBIis7Jw2IVt77jrJx9awCb3Rb86w", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCGh8tmH9x9njaI2mXfh2fyg", + name: "CrhymeTV", + ), + ), + PlaylistVideo( + id: "cgb-zp9DDHg", + title: "Bushido X Shindy - Brot brechen", + length: 191, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/cgb-zp9DDHg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBoszXFG4nQrodmF7kDKDCpBahWnQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/cgb-zp9DDHg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCfm0jXvH07Zwpe3TClTKlHaboN6w", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/cgb-zp9DDHg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCBHPmY9MtaBTdJAVI_-jYFaX55BA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/cgb-zp9DDHg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDeCgbZHAuuT7LWZmje0LVx2deppg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCMHWpfahk3Kt8Us28Jg51nw", + name: "BUSHIDO", + ), + ), + PlaylistVideo( + id: "Q7ZXg3KQLt0", + title: "KOLLEGAH - Genozid (prod. von B-Case & Alexis Troy) (Official HD Video)", + length: 407, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Q7ZXg3KQLt0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCntzPVc1exjqTv4dMIRNj9l_fPFA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Q7ZXg3KQLt0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDkobJgb1KbJFFg6J7cT8Pt2TyZvA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Q7ZXg3KQLt0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBfyGwOliBxPWtQmvYgAEX4HXN-4A", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Q7ZXg3KQLt0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBoQeT0IPy8JomsL0mP43wRIOqThA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCDzpxJB1oNEg7a2Np14TEMQ", + name: "Selfmade Records", + ), + ), + PlaylistVideo( + id: "ysAEZOwp5rM", + title: "KOLLEGAH - John Gotti (prod. von Alexis Troy) (Official HD Video)", + length: 207, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ysAEZOwp5rM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAq4pm6ReaUxi45Ao_rQqFb-zTDqQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ysAEZOwp5rM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBjdP8a65p0TSycdRVALvl9YMOJpw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ysAEZOwp5rM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC_KKhBboprOBn5jL5qXkovGg7zQQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/ysAEZOwp5rM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBXTTkyWxHzFuWPfTR_NwpNb7x4uw", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCDzpxJB1oNEg7a2Np14TEMQ", + name: "Selfmade Records", + ), + ), + PlaylistVideo( + id: "m5vfng33SVE", + title: "Philipp Dittberner - Das ist dein Leben (Official Video)", + length: 282, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/m5vfng33SVE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCy3rZ_vNJbHC6MPjBKfkH9OF4KxQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/m5vfng33SVE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBEckg-wRqsBH-EFRWzs2OVjRaf0Q", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/m5vfng33SVE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCeKgFTiQ4I4LKWlV8MU2senbZREg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/m5vfng33SVE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAX9GCt-OndxB1ualgcAbdGrkZ9wA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UC8OZsdWmGCM-vojiQmtUK8g", + name: "groenlandrecords", + ), + ), + PlaylistVideo( + id: "yMfgjVlGbUE", + title: "SpongeBOZZ - SFTB/Apocalyptic Infinity/Payback #forsundiego (Prod. by Digital Drama)", + length: 1622, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/yMfgjVlGbUE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCImbZOtOhsu1n5GRh-mVYWhoCNGA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/yMfgjVlGbUE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDYzNO27OatJw_k2XJsmT3ldeNexg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/yMfgjVlGbUE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDaMLvXVf8bXvo1FNTviE4l7dRgjg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/yMfgjVlGbUE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD6_EY2x1j_LXaGR98e-9afWMXzRQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCx0XFgJ2OIESkkTjG4S7Gvw", + name: "SpongeBOZZ", + ), + ), + PlaylistVideo( + id: "OQIYEPe6DWY", + title: "Kraftwerk - Das Model", + length: 262, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/OQIYEPe6DWY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDcpI8_iSbWLFjaRFSoXae9jGhSkQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/OQIYEPe6DWY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5LsjnP1Hoqdxw8cRvlinjeyr6Uw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/OQIYEPe6DWY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCns2u7YcbS4N9LivclqJxmW2ltUw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/OQIYEPe6DWY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAVjSbp-Sh-zb2YDl0mNbXygzoIUg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCg9Mw2YNnXqrecKl4bKLVCQ", + name: "80smusicfanman", + ), + ), + PlaylistVideo( + id: "5FS8RIH7BpI", + title: "GENETIKK - Wünsch dir was (Official HD Video)", + length: 303, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/5FS8RIH7BpI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAuSraLlm5j-ap1h2ePrD79sxdoNQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5FS8RIH7BpI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC_CZk9yCOXLIodqUNuB-z6j_n17A", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5FS8RIH7BpI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDkdlyZ-KBjE1uosqR7nciamAthSg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5FS8RIH7BpI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCfhkbMyci0J0_cSm0mWa8XX4drAw", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCDzpxJB1oNEg7a2Np14TEMQ", + name: "Selfmade Records", + ), + ), + PlaylistVideo( + id: "zSRKgFB9piY", + title: "Keine ist wie Du - Joel Brandenstein & Chrisoula Botsika ( Gregor Meyle Acoustic Cover )", + length: 256, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/zSRKgFB9piY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAbaAoyp05Ae7eWUZvCAzFdRN6BMQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/zSRKgFB9piY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBRsTewgNIXUPfy9fvSljVWetlq5w", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/zSRKgFB9piY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCznDGOCeE-b3oZnaZI80epEegq6A", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/zSRKgFB9piY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBbq8PtwprgANkRm7fw7WlbUlJLuQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCu-Ue0vTWyMbM2KBPaCCg_w", + name: "Joel Brandenstein", + ), + ), + PlaylistVideo( + id: "e4eHhgwHCME", + title: "Kollegah & Farid Bang ✖\u{fe0f}STURMMASKE AUF ✖\u{fe0f} [official video]", + length: 275, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/e4eHhgwHCME/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDj3vRRbJlmnPr4rqKRkmZs-JIN7A", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/e4eHhgwHCME/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC3HZwDKNaGzIdIKUsTrC5-zs2hFQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/e4eHhgwHCME/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA7NCSA8pwZFT0MZ4jrqkoMaawDfg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/e4eHhgwHCME/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAdlZ-NEvydXmD6wgMAuNOS6KOjsg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCzmO7GegLke-jb5uZSQ9_HA", + name: "ALPHA MUSIC EMPIRE", + ), + ), + PlaylistVideo( + id: "q3hZvho7jNk", + title: "KC Rebell ✖\u{fe0f} PAPER ✖\u{fe0f} [ official Video ] GEE Futuristic, Nikki 3k & Joshimixu", + length: 222, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/q3hZvho7jNk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCLwp5luIJpaNOWk7bSXdYfTn0sBA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/q3hZvho7jNk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC9wXX-GLF2eGdmQTuc-guxMH_yHQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/q3hZvho7jNk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAEzv8913yIHXmsXAlp9HIP-8uT8g", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/q3hZvho7jNk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBBB9AV4fam_JSiFlbqj_MIdHJ03A", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCbDNCzgdLlvYY9dk5M8063A", + name: "BangerChannel", + ), + ), + PlaylistVideo( + id: "0nWysyj_Z4Y", + title: "Nimo - FLOUZ KOMMT FLOUZ GEHT (prod. von Jimmy Torrio) [Official 4K Video]", + length: 191, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/0nWysyj_Z4Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDQGu4QNzr3EMjQcAiTkPrm3q60nQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/0nWysyj_Z4Y/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBnrlIOHO7NpLZzy-kOIAtRbBYBjw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/0nWysyj_Z4Y/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDU6Tds7tUNQ30l4lQHUypGPD9ffA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/0nWysyj_Z4Y/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCV-K9BCTu3aaqCSMvmVS4ATbwMGg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCvnCXuh_zhm75EJ89qJ95Kw", + name: "385idéal", + ), + ), + PlaylistVideo( + id: "aGCcLWU0OVo", + title: "SIDO - Gürtel am Arm", + length: 218, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/aGCcLWU0OVo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDArDAbvY0RsPSuJPBh4uyPYSr4Bw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/aGCcLWU0OVo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_UufznL5LUBgVwGkp2-XXw0Y83w", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/aGCcLWU0OVo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAdfU-xkZEt-pyn791B95BZgehDuA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/aGCcLWU0OVo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB3pjJLwqxbs5vgj1ReGHTTeR9AFA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UChl3h_bqcx_c15f7WOtSn-A", + name: "Sido", + ), + ), + PlaylistVideo( + id: "OQsXLK4MeEA", + title: "JBB 2013 - SpongeBOZZ vs. Gio (Finale HR) prod. by Digital Drama", + length: 400, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/OQsXLK4MeEA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBZWiGbF4RrO7JLpICvTuC-eHpfuw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/OQsXLK4MeEA/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB4Y1U_BZ2Pstt31dgdE81ZCh-BIA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/OQsXLK4MeEA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAIvMW0seg_i18U0LGQc6nXOEg4ig", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/OQsXLK4MeEA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBHhlSA1DYt5RKfxpsJMOfltOfrRQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCM8Eb--xiPqS8tR3z5FeXEw", + name: "JuliensBlogBattle", + ), + ), + PlaylistVideo( + id: "xm7dxIqOO2M", + title: "KURDO - Halbmond (prod. by Amir & Kostas)", + length: 272, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/xm7dxIqOO2M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBxxl3-2dozhr306-FrORMGygKXoQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/xm7dxIqOO2M/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCBRkCIteBTNBEKdIG5GCvdH4tQiw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/xm7dxIqOO2M/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA6Iqbyw3_jDtzCH8DhVaZ8V9-lzQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/xm7dxIqOO2M/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDdleZZB5jUpW7FD6CZK4xDsu2grg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCU8Xw_KewvcC3LV3Qv--JZg", + name: "KURDO", + ), + ), + PlaylistVideo( + id: "jlaaByab4Zk", + title: "Mc Yankoo feat. Milica Todorovic - Ljubi me budalo (official Video)", + length: 224, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/jlaaByab4Zk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBG5CJRj0SjU1Vm1l9EIGnWOG1mUQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/jlaaByab4Zk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBaooOhYrwkAiVs4ucNMNqa9dljPA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/jlaaByab4Zk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDA2iUeh4wzmAqw6kgpv6WBbuvndA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/jlaaByab4Zk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDBOt4cbrgw9htY0Qak1WS6jJ-ggQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCJQXmT0GmepGynjFJmRcTaA", + name: "yankoomusic", + ), + ), + PlaylistVideo( + id: "KG9-jSqXz4U", + title: "Oft Gefragt - AnnenMayKantereit (Official Video)", + length: 205, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/KG9-jSqXz4U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCdiXgKroQCc_4uA9cgiCKIDKbUYg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/KG9-jSqXz4U/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCPBt053pedFQpdQ6yssCj_O1vcWQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/KG9-jSqXz4U/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAroMOtiSETWFmaRS9wAY8itLCyoQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/KG9-jSqXz4U/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAJJMywZ3M3n95MtU9axUdUw4T3NA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCheky_SBEExtbK_T0onuDwg", + name: "AnnenMayKantereit", + ), + ), + PlaylistVideo( + id: "7dISZnwsBSA", + title: "Prinz Pi - 1,40m (feat. Philipp Dittberner)", + length: 284, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/7dISZnwsBSA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA2ZhuSJUc-O8GnUa12UH5Z08qWlA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/7dISZnwsBSA/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCJq7xMMUx7ywYmEKRUw8hGUhZBBg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/7dISZnwsBSA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBCusReY0vXShIXws6v8UtalIGkxg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/7dISZnwsBSA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLByBkAOQ1jy1MYmt4oEuQk1bFR_DA", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCh-WV4-j8IAmfKiHJoc5Ecw", + name: "Keine Liebe", + ), + ), + PlaylistVideo( + id: "F_PPdS-PB14", + title: "Nimo - IDÉAL (prod. von SOTT) [Official 4K Video]", + length: 253, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/F_PPdS-PB14/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCIcbTSt6Q1Xo8sqLnyEbbXSuLBcg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/F_PPdS-PB14/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBoKMX5q6gv9BCUmABphuYY7tsBvg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/F_PPdS-PB14/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDa2DrtkKumkD-hFcRjbLTJNY-nVw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/F_PPdS-PB14/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD7jbaxWyKvPSKClCdwDS2RIGYHZw", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCvnCXuh_zhm75EJ89qJ95Kw", + name: "385idéal", + ), + ), + PlaylistVideo( + id: "DMg9idvVY8M", + title: "Nimo - BITTER (prod. von Jimmy Torrio) [Official 4K Video]", + length: 173, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/DMg9idvVY8M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCIg_8ZAGGj-OC9R8sh4txS_8bQHw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DMg9idvVY8M/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBIrMCl9q3jbb6dSgBSScbwsoP-aw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DMg9idvVY8M/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDFsDhOvx_P0ZVY_V1lAQ7hIm6kvA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DMg9idvVY8M/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAcv8JfTKZSHOfIF3YK7WI7vLXU6w", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCvnCXuh_zhm75EJ89qJ95Kw", + name: "385idéal", + ), + ), + PlaylistVideo( + id: "DGEmoSFI94Y", + title: "SDP - Kurz für immer bleiben", + length: 218, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/DGEmoSFI94Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB2H8YGPqxgGisgCPfV-svTSrBY3g", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DGEmoSFI94Y/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC505GDTWcRlLCh-hl5Nwq_yFc2Cg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DGEmoSFI94Y/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB_RIUrQraaqmPKGCgjad14QpseiA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DGEmoSFI94Y/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD0qTw3A7BauDRKqoosxSclp5S8VQ", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCOiG4UoE0-CBZKlDVgw1eTA", + name: "Stonedeafproduction", + ), + ), + PlaylistVideo( + id: "BtZufymxHvE", + title: "LX & Maxwell - Ausser Kontrolle (Jambeatz)", + length: 159, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/BtZufymxHvE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCNkUFpFYV3Tnk-NnRMwuHuQlxl-g", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/BtZufymxHvE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCWRZ9aUGqPi91vKUrag_X1QH2llw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/BtZufymxHvE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAKDQ4wRayxMaFptbPLc9sAuZ6WtQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/BtZufymxHvE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBP1wdb50WShFPB1dLT7h49WaEUXg", + width: 336, + height: 188, + ), + ], + channel: ChannelId( + id: "UCGh8tmH9x9njaI2mXfh2fyg", + name: "CrhymeTV", + ), + ), + ], + ctoken: Some("4qmFsgJfEiRWTFBMNWREeDY4MVQ0YlI3WkYxSXVXek92MW9tbFJiRTdQaUoaEkNBSjZCMUJVT2tOT1FVSSUzRJoCIlBMNWREeDY4MVQ0YlI3WkYxSXVXek92MW9tbFJiRTdQaUo%3D"), + endpoint: browse, +) diff --git a/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_long.snap b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_long.snap index 090cc3d..d2bcb21 100644 --- a/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_long.snap +++ b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_long.snap @@ -3110,6 +3110,7 @@ Playlist( ), ], ctoken: Some("4qmFsgJhEiRWTFBMNWREeDY4MVQ0YlI3WkYxSXVXek92MW9tbFJiRTdQaUoaFENBRjZCbEJVT2tOSFdRJTNEJTNEmgIiUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSg%3D%3D"), + endpoint: browse, ), video_count: 495, thumbnail: [ diff --git a/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_nomusic.snap b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_nomusic.snap index a93af8d..40698fe 100644 --- a/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_nomusic.snap +++ b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_nomusic.snap @@ -2056,6 +2056,7 @@ Playlist( ), ], ctoken: None, + endpoint: browse, ), video_count: 66, thumbnail: [ diff --git a/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_short.snap b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_short.snap index 7128e28..cb76d35 100644 --- a/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_short.snap +++ b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_short.snap @@ -3017,6 +3017,7 @@ Playlist( ), ], ctoken: None, + endpoint: browse, ), video_count: 97, thumbnail: [ diff --git a/src/client/snapshots/rustypipe__client__search__tests__map_search_default.snap b/src/client/snapshots/rustypipe__client__search__tests__map_search_default.snap index 8e9df34..44a88f1 100644 --- a/src/client/snapshots/rustypipe__client__search__tests__map_search_default.snap +++ b/src/client/snapshots/rustypipe__client__search__tests__map_search_default.snap @@ -6,7 +6,7 @@ SearchResult( items: Paginator( count: Some(7499), items: [ - Channel(SearchChannel( + Channel(ChannelItem( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -21,12 +21,12 @@ SearchResult( height: 176, ), ], - verification: verified, + verification: Verified, subscriber_count: Some(292), video_count: 219, short_description: "Hi, I\'m Tina, aka Doobydobap! Food is the medium I use to tell stories and connect with people who share the same passion as I\u{a0}...", )), - Video(SearchVideo( + Video(VideoItem( id: "1VW7iXRIrc8", title: "Alone, in the City of Love", length: Some(1875), @@ -42,7 +42,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -52,17 +52,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 531580, + view_count: Some(531580), is_live: false, is_short: false, - short_description: "I know it\'s a little long, but I hope you enjoyed this Paris vlog :} Location Udon Restaurant: Sanukiya 9 Rue d\'Argenteuil, Paris\u{a0}...", + is_upcoming: false, + short_description: Some("I know it\'s a little long, but I hope you enjoyed this Paris vlog :} Location Udon Restaurant: Sanukiya 9 Rue d\'Argenteuil, Paris\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "9NuhKCv3crg", title: "the end.", length: Some(982), @@ -78,7 +79,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -88,17 +89,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 days ago"), - view_count: 974475, + view_count: Some(974475), is_live: false, is_short: false, - short_description: "or the start of something new~~~~~ Thank you for your patience on the vlog, it took some time to adjust to my new normal. Excited\u{a0}...", + is_upcoming: false, + short_description: Some("or the start of something new~~~~~ Thank you for your patience on the vlog, it took some time to adjust to my new normal. Excited\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "hGbQ2WM9nOo", title: "Why does everything bad for you taste good ㅣ CHILI OIL RAMEN", length: Some(428), @@ -114,7 +116,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -124,17 +126,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 1034415, + view_count: Some(1034415), is_live: false, is_short: false, - short_description: "https://partner.bokksu.com/doobydobap use code DOOBYDOBAP to get $15 off your first bokksu order! Instagram @doobydobap\u{a0}...", + is_upcoming: false, + short_description: Some("https://partner.bokksu.com/doobydobap use code DOOBYDOBAP to get $15 off your first bokksu order! Instagram @doobydobap\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "PxGmP4v_A38", title: "Alone and Thriving l late night korean convenience store, muji kitchenware haul, spring cleaning!", length: Some(1437), @@ -150,7 +153,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -160,17 +163,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 831908, + view_count: Some(831908), is_live: false, is_short: false, - short_description: "I could palpably feel how I\'m so much happier than before when I was reviewing my footage All the finalized recipes will be\u{a0}...", + is_upcoming: false, + short_description: Some("I could palpably feel how I\'m so much happier than before when I was reviewing my footage All the finalized recipes will be\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "38Gd6TdmNVs", title: "KOREAN BARBECUE l doob gourmand ep.3", length: Some(525), @@ -186,7 +190,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -196,17 +200,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 354486, + view_count: Some(354486), is_live: false, is_short: false, - short_description: "I haven\'t done a doob gourmand series in so so long! I hope you enjoyed it, let me know what kind of food you\'re interested in\u{a0}...", + is_upcoming: false, + short_description: Some("I haven\'t done a doob gourmand series in so so long! I hope you enjoyed it, let me know what kind of food you\'re interested in\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "CutR_1SDDzY", title: "feels good to be back", length: Some(1159), @@ -222,7 +227,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -232,17 +237,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 524950, + view_count: Some(524950), is_live: false, is_short: false, - short_description: "I missed you guys. Happy to see you guys back. I\'ve really been working on my mental health, educating myself with different food\u{a0}...", + is_upcoming: false, + short_description: Some("I missed you guys. Happy to see you guys back. I\'ve really been working on my mental health, educating myself with different food\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "pRVSdUxdsVw", title: "Repairing...", length: Some(965), @@ -258,7 +264,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -268,17 +274,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 weeks ago"), - view_count: 528595, + view_count: Some(528595), is_live: false, is_short: false, - short_description: "The word repair stems from the Latin word reparare, from re- \'back\' and parare \'make ready.\' And I feel that\'s exactly how I feel\u{a0}...", + is_upcoming: false, + short_description: Some("The word repair stems from the Latin word reparare, from re- \'back\' and parare \'make ready.\' And I feel that\'s exactly how I feel\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "KUz7oArksR4", title: "running away", length: Some(1023), @@ -294,7 +301,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -304,17 +311,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 717515, + view_count: Some(717515), is_live: false, is_short: false, - short_description: "for now... more adventures to come! Music by Mark Generous - A Summer Day - https://thmatc.co/?l=CF6C5FFF Instagram\u{a0}...", + is_upcoming: false, + short_description: Some("for now... more adventures to come! Music by Mark Generous - A Summer Day - https://thmatc.co/?l=CF6C5FFF Instagram\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "sPb2gyN-hnE", title: "worth fighting for", length: Some(1232), @@ -330,7 +338,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -340,17 +348,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 624386, + view_count: Some(624386), is_live: false, is_short: false, - short_description: "Please be respectful in the comments section! I will not be tolerating any hateful/derogatory speech *barking noise* Music\u{a0}...", + is_upcoming: false, + short_description: Some("Please be respectful in the comments section! I will not be tolerating any hateful/derogatory speech *barking noise* Music\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "rriwHj8U664", title: "my seoul apartment tour", length: Some(721), @@ -366,7 +375,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -376,17 +385,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 696942, + view_count: Some(696942), is_live: false, is_short: false, - short_description: "Korea has an interesting rent structure called junseh where you pay a higher security deposit in turn for lower rent! And before\u{a0}...", + is_upcoming: false, + short_description: Some("Korea has an interesting rent structure called junseh where you pay a higher security deposit in turn for lower rent! And before\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "PXsK9-CFoH4", title: "waiting...", length: Some(1455), @@ -402,7 +412,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -412,17 +422,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 923749, + view_count: Some(923749), is_live: false, is_short: false, - short_description: "tuna kimchi jook 2 cups cooked rice 3 cups water 1 cup kimchi 320g canned tuna 1 tbsp perilla seed oil 1 onion 1 tbsp gochujang\u{a0}...", + is_upcoming: false, + short_description: Some("tuna kimchi jook 2 cups cooked rice 3 cups water 1 cup kimchi 320g canned tuna 1 tbsp perilla seed oil 1 onion 1 tbsp gochujang\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "bXbmYelTnhw", title: "Doobydobap rates British desserts!", length: Some(865), @@ -438,7 +449,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOgGAfSUy5LvEyVS_LF5kdw", name: "JOLLY", avatar: [ @@ -448,17 +459,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 1282467, + view_count: Some(1282467), is_live: false, is_short: false, - short_description: "Today we introduce @Doobydobap to the best of British desserts! Massive thanks to Dooby for joining us for this episode.", + is_upcoming: false, + short_description: Some("Today we introduce @Doobydobap to the best of British desserts! Massive thanks to Dooby for joining us for this episode."), )), - Video(SearchVideo( + Video(VideoItem( id: "0onVbAuBGWI", title: "Out of Control", length: Some(1125), @@ -474,7 +486,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -484,17 +496,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 months ago"), - view_count: 1649656, + view_count: Some(1649656), is_live: false, is_short: false, - short_description: "Hey doobies, I know I promised a cookie recipe in my last vlog, but I haven\'t yet developed one of my own just yet-- still recipe\u{a0}...", + is_upcoming: false, + short_description: Some("Hey doobies, I know I promised a cookie recipe in my last vlog, but I haven\'t yet developed one of my own just yet-- still recipe\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "FKJtrUeol3o", title: "with quantity comes quality", length: Some(1140), @@ -510,7 +523,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -520,17 +533,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 months ago"), - view_count: 1085725, + view_count: Some(1085725), is_live: false, is_short: false, - short_description: "A busy, but calm week for me here in Seoul living alone. Planning on exploring more parts of Korea, please let me know in the\u{a0}...", + is_upcoming: false, + short_description: Some("A busy, but calm week for me here in Seoul living alone. Planning on exploring more parts of Korea, please let me know in the\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "dkMtSrjDLO0", title: "How to make Naruto\'s favorite ramen", length: Some(802), @@ -546,7 +560,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -556,17 +570,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("10 months ago"), - view_count: 1327833, + view_count: Some(1327833), is_live: false, is_short: false, - short_description: "Broth * 1 large chicken * 1 leek & ½ onion charred * 1 leek & ½ onion * 1 tbsp ginger * 6 garlic cloves Tare * leftover cha shu\u{a0}...", + is_upcoming: false, + short_description: Some("Broth * 1 large chicken * 1 leek & ½ onion charred * 1 leek & ½ onion * 1 tbsp ginger * 6 garlic cloves Tare * leftover cha shu\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "r2ye6zW0nbM", title: "a wedding", length: Some(1207), @@ -582,7 +597,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -592,17 +607,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 1052801, + view_count: Some(1052801), is_live: false, is_short: false, - short_description: "Ginger Pork Recipe! https://doobydobap.com/recipe/ginger-pork-shogayaki - Instagram @doobydobap Join my discord!", + is_upcoming: false, + short_description: Some("Ginger Pork Recipe! https://doobydobap.com/recipe/ginger-pork-shogayaki - Instagram @doobydobap Join my discord!"), )), - Video(SearchVideo( + Video(VideoItem( id: "NudTbo2CJMY", title: "Flying to London", length: Some(1078), @@ -618,7 +634,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -628,17 +644,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 months ago"), - view_count: 1137136, + view_count: Some(1137136), is_live: false, is_short: false, - short_description: "Tomato Beef Curry 1 packet Japanese Curry Roux 250g thinly sliced beef 2 large onions 2 tbsp butter 2 tbsp neutral oil 1 can\u{a0}...", + is_upcoming: false, + short_description: Some("Tomato Beef Curry 1 packet Japanese Curry Roux 250g thinly sliced beef 2 large onions 2 tbsp butter 2 tbsp neutral oil 1 can\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "gK-jLnvVsb0", title: "Contradicting myself", length: Some(1381), @@ -654,7 +671,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -664,17 +681,18 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 months ago"), - view_count: 928967, + view_count: Some(928967), is_live: false, is_short: false, - short_description: "Sesame Granola Recipe 2 cups old-fashioned instant oats 2 cups mixture of seeds / nuts of your choice (I used ½ cup each of\u{a0}...", + is_upcoming: false, + short_description: Some("Sesame Granola Recipe 2 cups old-fashioned instant oats 2 cups mixture of seeds / nuts of your choice (I used ½ cup each of\u{a0}..."), )), - Video(SearchVideo( + Video(VideoItem( id: "fAFFTOpUNWo", title: "Come Grocery Shopping with Me", length: Some(1126), @@ -690,7 +708,7 @@ SearchResult( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", avatar: [ @@ -700,18 +718,20 @@ SearchResult( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 months ago"), - view_count: 1077297, + view_count: Some(1077297), is_live: false, is_short: false, - short_description: "Pecan Banana Bread with Coffee Liquor Recipe https://doobydobap.com/recipe/pecan-banana-bread-with-coffee-liquor Music\u{a0}...", + is_upcoming: false, + short_description: Some("Pecan Banana Bread with Coffee Liquor Recipe https://doobydobap.com/recipe/pecan-banana-bread-with-coffee-liquor Music\u{a0}..."), )), ], ctoken: Some("EqsDEgpkb29ieWRvYmFwGpwDU0JTQ0FSaFZRMmc0WjBoa2RIcFBNblJZWkRVNU0xOWlha1Z5VjJlQ0FRc3hWbGMzYVZoU1NYSmpPSUlCQ3psT2RXaExRM1l6WTNKbmdnRUxhRWRpVVRKWFRUbHVUMi1DQVF0UWVFZHRVRFIyWDBFek9JSUJDek00UjJRMlZHUnRUbFp6Z2dFTFEzVjBVbDh4VTBSRWVsbUNBUXR3VWxaVFpGVjRaSE5XZDRJQkMwdFZlamR2UVhKcmMxSTBnZ0VMYzFCaU1tZDVUaTFvYmtXQ0FRdHljbWwzU0dvNFZUWTJOSUlCQzFCWWMwczVMVU5HYjBnMGdnRUxZbGhpYlZsbGJGUnVhSGVDQVFzd2IyNVdZa0YxUWtkWFNZSUJDMFpMU25SeVZXVnZiRE52Z2dFTFpHdE5kRk55YWtSTVR6Q0NBUXR5TW5sbE5ucFhNRzVpVFlJQkMwNTFaRlJpYnpKRFNrMVpnZ0VMWjBzdGFreHVkbFp6WWpDQ0FRdG1RVVpHVkU5d1ZVNVhiN0lCQmdvRUNCY1FBZyUzRCUzRBiB4OgYIgtzZWFyY2gtZmVlZA%3D%3D"), + endpoint: browse, ), corrected_query: Some("doobydobap"), ) diff --git a/src/client/snapshots/rustypipe__client__search__tests__map_search_empty.snap b/src/client/snapshots/rustypipe__client__search__tests__map_search_empty.snap index 49746f5..924e93b 100644 --- a/src/client/snapshots/rustypipe__client__search__tests__map_search_empty.snap +++ b/src/client/snapshots/rustypipe__client__search__tests__map_search_empty.snap @@ -7,6 +7,7 @@ SearchResult( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), corrected_query: None, ) diff --git a/src/client/snapshots/rustypipe__client__search__tests__map_search_playlists.snap b/src/client/snapshots/rustypipe__client__search__tests__map_search_playlists.snap index 1b705c1..ccd3437 100644 --- a/src/client/snapshots/rustypipe__client__search__tests__map_search_playlists.snap +++ b/src/client/snapshots/rustypipe__client__search__tests__map_search_playlists.snap @@ -6,7 +6,7 @@ SearchResult( items: Paginator( count: Some(18932046), items: [ - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "RDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8", name: "Pop\'s Biggest Hits", thumbnail: [ @@ -31,21 +31,16 @@ SearchResult( height: 188, ), ], - video_count: 225, - first_videos: [ - SearchPlaylistVideo( - id: "XfEMj-z3TtA", - title: "STAY", - length: Some(142), - ), - SearchPlaylistVideo( - id: "MozAXGgC1Mc", - title: "Sugar", - length: Some(236), - ), - ], + channel: Some(ChannelTag( + id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", + name: "YouTube Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(225), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "RDCLAK5uy_mVJ3RRi_YBfUJnZnQxLAedQQcXHujbUcg", name: "Pump-Up Pop", thumbnail: [ @@ -70,21 +65,16 @@ SearchResult( height: 188, ), ], - video_count: 100, - first_videos: [ - SearchPlaylistVideo( - id: "J7p4bzqLvCw", - title: "Blinding Lights", - length: Some(202), - ), - SearchPlaylistVideo( - id: "G1ej5up7JG0", - title: "Shivers", - length: Some(208), - ), - ], + channel: Some(ChannelTag( + id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", + name: "YouTube Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(100), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI", name: "Happy Pop Hits", thumbnail: [ @@ -109,21 +99,16 @@ SearchResult( height: 188, ), ], - video_count: 59, - first_videos: [ - SearchPlaylistVideo( - id: "52QG9C9dnLM", - title: "Better Days", - length: Some(161), - ), - SearchPlaylistVideo( - id: "ntG3GQdY_Ok", - title: "Light Switch", - length: Some(186), - ), - ], + channel: Some(ChannelTag( + id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", + name: "YouTube Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(59), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "RDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA", name: "Pop Gold", thumbnail: [ @@ -148,21 +133,16 @@ SearchResult( height: 188, ), ], - video_count: 100, - first_videos: [ - SearchPlaylistVideo( - id: "XqoanTj5pNY", - title: "Someone Like You", - length: Some(286), - ), - SearchPlaylistVideo( - id: "th92jw2CFOA", - title: "When I Was Your Man", - length: Some(214), - ), - ], + channel: Some(ChannelTag( + id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", + name: "YouTube Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(100), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "RDCLAK5uy_lb6CVU6S4uVugLVNTU9WhqfaomWAgnho4", name: "Shout-Out Pop Hits", thumbnail: [ @@ -187,21 +167,16 @@ SearchResult( height: 188, ), ], - video_count: 50, - first_videos: [ - SearchPlaylistVideo( - id: "cTr-aGK-LpA", - title: "My Head & My Heart", - length: Some(175), - ), - SearchPlaylistVideo( - id: "xn0-IZZ6YO4", - title: "abcdefu", - length: Some(169), - ), - ], + channel: Some(ChannelTag( + id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", + name: "YouTube Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(50), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "RDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg", name: "Mellow Pop Classics", thumbnail: [ @@ -226,21 +201,16 @@ SearchResult( height: 188, ), ], - video_count: 50, - first_videos: [ - SearchPlaylistVideo( - id: "fdz_cabS9BU", - title: "Thinking out Loud", - length: Some(282), - ), - SearchPlaylistVideo( - id: "BRbTpCrHv4o", - title: "Broken Strings", - length: Some(251), - ), - ], + channel: Some(ChannelTag( + id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", + name: "YouTube Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(50), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "PLDIoUOhQQPlVr3qepMVRsDe4T8vNQsvno", name: "Türkçe Pop Şarkılar 2022 - Yeni Hit Şarkılar 2022", thumbnail: [ @@ -265,21 +235,16 @@ SearchResult( height: 188, ), ], - video_count: 220, - first_videos: [ - SearchPlaylistVideo( - id: "zU2_jPxz9q4", - title: "Ara - Zeynep Bastık (Paro Official ZB Version) | Music Video", - length: Some(201), - ), - SearchPlaylistVideo( - id: "vHIf_Gk8GLg", - title: "Mustafa Ceceli & Indira Elemes - İlla", - length: Some(153), - ), - ], + channel: Some(ChannelTag( + id: "UCX9oPuvJYZsG8wnHTwOBVPA", + name: "Chillax", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(220), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk", name: "Dance-Pop Bangers", thumbnail: [ @@ -304,21 +269,16 @@ SearchResult( height: 188, ), ], - video_count: 100, - first_videos: [ - SearchPlaylistVideo( - id: "hJWSZDJb-W4", - title: "Bad Habits", - length: Some(231), - ), - SearchPlaylistVideo( - id: "c5l4CGQozWY", - title: "Work from Home", - length: Some(215), - ), - ], + channel: Some(ChannelTag( + id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", + name: "YouTube Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(100), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "RDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY", name: "Laid-Back Sofa Pop", thumbnail: [ @@ -343,21 +303,16 @@ SearchResult( height: 188, ), ], - video_count: 67, - first_videos: [ - SearchPlaylistVideo( - id: "T7iuw9Qx7t4", - title: "Astronomy", - length: Some(244), - ), - SearchPlaylistVideo( - id: "p-IXgwqhfmg", - title: "Love Yourself", - length: Some(234), - ), - ], + channel: Some(ChannelTag( + id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", + name: "YouTube Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(67), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "RDCLAK5uy_mHW5bcduhjB-PkTePAe6EoRMj1xNT8gzY", name: "K-Pop Girl Crush", thumbnail: [ @@ -382,21 +337,16 @@ SearchResult( height: 188, ), ], - video_count: 78, - first_videos: [ - SearchPlaylistVideo( - id: "18nDrsoii5M", - title: "붐바야 (Boombayah)", - length: Some(241), - ), - SearchPlaylistVideo( - id: "miqQAzOXPBo", - title: "달라달라 DALLA DALLA", - length: Some(200), - ), - ], + channel: Some(ChannelTag( + id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", + name: "YouTube Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(78), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI", name: "Cardio Pop", thumbnail: [ @@ -421,21 +371,16 @@ SearchResult( height: 188, ), ], - video_count: 80, - first_videos: [ - SearchPlaylistVideo( - id: "G1ej5up7JG0", - title: "Shivers", - length: Some(208), - ), - SearchPlaylistVideo( - id: "vgn-b0ksX4g", - title: "Heaven Takes You Home", - length: Some(215), - ), - ], + channel: Some(ChannelTag( + id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", + name: "YouTube Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(80), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "PLI_7Mg2Z_-4Lf7IYeiTEOV8HBn-nMqz5N", name: "Pop 2022 ♫ Mix Pop En Ingles (English Pop Songs 2022)", thumbnail: [ @@ -460,21 +405,16 @@ SearchResult( height: 188, ), ], - video_count: 70, - first_videos: [ - SearchPlaylistVideo( - id: "a7GITgqwDVg", - title: "Charlie Puth - Left And Right (feat. Jung Kook of BTS) [Official Video]", - length: Some(160), - ), - SearchPlaylistVideo( - id: "H5v3kku4y6Q", - title: "Harry Styles - As It Was (Official Video)", - length: Some(166), - ), - ], + channel: Some(ChannelTag( + id: "UC8Ojfs-1VLiAO_MosLwvjpQ", + name: "Redlist - Ultimate Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(70), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "PLX6L4t7t6ZanfCJ1wBxRdGZ_mk9ygmKqo", name: "Deutsch Pop Hits NEU 2022", thumbnail: [ @@ -499,21 +439,16 @@ SearchResult( height: 188, ), ], - video_count: 164, - first_videos: [ - SearchPlaylistVideo( - id: "oE7Fe8QBw1Y", - title: "Johannes Oerding - Kaleidoskop", - length: Some(217), - ), - SearchPlaylistVideo( - id: "JvqMO-tWlrU", - title: "Tim Bendzko - DAS LEBEN WIEDER LIEBEN (Offizielles Musikvideo)", - length: Some(169), - ), - ], + channel: Some(ChannelTag( + id: "UCesP91XKnuZVd6OJN06hokg", + name: "Startup Records", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(164), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "PLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj", name: "Pop Music Playlist - Timeless Pop Songs (Updated Weekly 2022)", thumbnail: [ @@ -538,21 +473,16 @@ SearchResult( height: 188, ), ], - video_count: 200, - first_videos: [ - SearchPlaylistVideo( - id: "U0CGsw6h60k", - title: "Rihanna - What\'s My Name? ft. Drake", - length: Some(265), - ), - SearchPlaylistVideo( - id: "OPf0YbXqDm0", - title: "Mark Ronson - Uptown Funk (Official Video) ft. Bruno Mars", - length: Some(271), - ), - ], + channel: Some(ChannelTag( + id: "UCs72iRpTEuwV3y6pdWYLgiw", + name: "Redlist - Just Hits", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(200), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "PLgRdph0qPLy53IhYrQLPpATDDA2TpFey5", name: "Teen-Pop 90-2000", thumbnail: [ @@ -577,21 +507,16 @@ SearchResult( height: 188, ), ], - video_count: 50, - first_videos: [ - SearchPlaylistVideo( - id: "4fndeDfaWCg", - title: "Backstreet Boys - I Want It That Way (Official HD Video)", - length: Some(220), - ), - SearchPlaylistVideo( - id: "gJLIiF15wjQ", - title: "Spice Girls - Wannabe (Official Music Video)", - length: Some(236), - ), - ], + channel: Some(ChannelTag( + id: "UCv9O2E_G8U46Paz8828THJw", + name: "Victor Vaz", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(50), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "RDCLAK5uy_nCVF_zUZizzRcojIUuYmaXxMoPgg2WMDo", name: "Klangfarbe: German Pop Hits", thumbnail: [ @@ -616,21 +541,16 @@ SearchResult( height: 188, ), ], - video_count: 52, - first_videos: [ - SearchPlaylistVideo( - id: "jBFcbfteBDU", - title: "Ich hass dich", - length: Some(194), - ), - SearchPlaylistVideo( - id: "CjV7rkhQ66I", - title: "ROSES", - length: Some(148), - ), - ], + channel: Some(ChannelTag( + id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", + name: "YouTube Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(52), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "RDCLAK5uy_lY6JFrs7W9yIhFjUN_yxQ_ubkjcrqQaVs", name: "Bedroom Pop", thumbnail: [ @@ -655,21 +575,16 @@ SearchResult( height: 188, ), ], - video_count: 178, - first_videos: [ - SearchPlaylistVideo( - id: "r23tQvESL7w", - title: "Picture in my mind", - length: Some(177), - ), - SearchPlaylistVideo( - id: "4DyV0hWOdQw", - title: "we fell in love in october", - length: Some(185), - ), - ], + channel: Some(ChannelTag( + id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", + name: "YouTube Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(178), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "RDCLAK5uy_l7K78k4EkjcFojhd1617rmUjY-aet6-t0", name: "K-Pop Party Hits", thumbnail: [ @@ -694,21 +609,16 @@ SearchResult( height: 188, ), ], - video_count: 87, - first_videos: [ - SearchPlaylistVideo( - id: "LCpjdohpuEE", - title: "Permission to Dance", - length: Some(188), - ), - SearchPlaylistVideo( - id: "8mA6jIeojnk", - title: "How You Like That", - length: Some(182), - ), - ], + channel: Some(ChannelTag( + id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", + name: "YouTube Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(87), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "RDCLAK5uy_lj-zBExVYl7YN_NxXboDIh4A-wKGfgzNY", name: "I-Pop Hits!", thumbnail: [ @@ -733,21 +643,16 @@ SearchResult( height: 188, ), ], - video_count: 50, - first_videos: [ - SearchPlaylistVideo( - id: "g-7u06NK1mo", - title: "Killer Haseena", - length: Some(161), - ), - SearchPlaylistVideo( - id: "v0Q56geMlkk", - title: "Kesariyo Rang", - length: Some(194), - ), - ], + channel: Some(ChannelTag( + id: "UC-9-kyTW8ZkZNDHQJ6FgpwQ", + name: "YouTube Music", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(50), )), - Playlist(SearchPlaylist( + Playlist(PlaylistItem( id: "PLDIoUOhQQPlXqz5QZ3dx-lh_p6RcPeKjv", name: "POP Music Playlist 2022 - New POP Songs - Pop Songs 2022 Playlist", thumbnail: [ @@ -772,22 +677,18 @@ SearchResult( height: 188, ), ], - video_count: 100, - first_videos: [ - SearchPlaylistVideo( - id: "WcIcVapfqXw", - title: "Rema, Selena Gomez - Calm Down (Official Music Video)", - length: Some(240), - ), - SearchPlaylistVideo( - id: "a7GITgqwDVg", - title: "Charlie Puth - Left And Right (feat. Jung Kook of BTS) [Official Video]", - length: Some(160), - ), - ], + channel: Some(ChannelTag( + id: "UCX9oPuvJYZsG8wnHTwOBVPA", + name: "Chillax", + avatar: [], + verification: None, + subscriber_count: None, + )), + video_count: Some(100), )), ], ctoken: Some("EqIJEgNwb3AamglFZ0lRQTBnVWdnRXJVa1JEVEVGTE5YVjVYMjV0VXpOWmIzaFRkMVpXVVdzNWJFVlJTakJWV0RSYVEycFljMWRmY0hOVk9JSUJLMUpFUTB4QlN6VjFlVjl0VmtvelVsSnBYMWxDWmxWS2JscHVVWGhNUVdWa1VWRmpXRWgxYW1KVlkyZUNBU3RTUkVOTVFVczFkWGxmYldaa2NYWkRRV3c0ZDI5a2JIZ3lVREpmUVdreVowNXJhVkpFUVhWbWEydEpnZ0VyVWtSRFRFRkxOWFY1WDI1SVUzRkRTbXBFY2xjNVNFSm9RMDVrUmpaMFYxQmtiazlOYm1kUGRqQjNRWUlCSzFKRVEweEJTelYxZVY5c1lqWkRWbFUyVXpSMVZuVm5URlpPVkZVNVYyaHhabUZ2YlZkQloyNW9ielNDQVN0U1JFTk1RVXMxZFhsZmJrUk1PRXRsUW5KVllXZDNlVWxUZDA1dGVVVnBVMlpaWjNveFoxWkRaWE5uZ2dFaVVFeEVTVzlWVDJoUlVWQnNWbkl6Y1dWd1RWWlNjMFJsTkZRNGRrNVJjM1p1YjRJQksxSkVRMHhCU3pWMWVWOXVabk5mZERSR1ZYVXdNRVUxUlVRMmJIWmxSVUpDV0RGV1RWbGxNVzFHYW11Q0FTdFNSRU5NUVVzMWRYbGZiVjh3VlRWV1VVNTVlWHAzZDBneGJGSnBOMk5RUVVGSFdIRk9VVzVCVDNGWmdnRXJVa1JEVEVGTE5YVjVYMjFJVnpWaVkyUjFhR3BDTFZCclZHVlFRV1UyUlc5U1RXb3hlRTVVT0dkNldZSUJLMUpFUTB4QlN6VjFlVjlyVUhGS1gwWnBSMnN0YkdKWWRHZE5ORWxHTkRKMWIydHphMU5LV21sV1ZFbUNBU0pRVEVsZk4wMW5NbHBmTFRSTVpqZEpXV1ZwVkVWUFZqaElRbTR0YmsxeGVqVk9nZ0VpVUV4WU5rdzBkRGQwTmxwaGJtWkRTakYzUW5oU1pFZGFYMjFyT1hsbmJVdHhiNElCSWxCTVRVTTVTMDVyU1c1alMzUlFlbWRaTFRWeWJXaDJhamRtWVhnNFptUjRiMnFDQVNKUVRHZFNaSEJvTUhGUVRIazFNMGxvV1hKUlRGQndRVlJFUkVFeVZIQkdaWGsxZ2dFclVrUkRURUZMTlhWNVgyNURWa1pmZWxWYWFYcDZVbU52YWtsVmRWbHRZVmg0VFc5UVoyY3lWMDFFYjRJQksxSkVRMHhCU3pWMWVWOXNXVFpLUm5Kek4xYzVlVWxvUm1wVlRsOTVlRkZmZFdKcmFtTnljVkZoVm5PQ0FTdFNSRU5NUVVzMWRYbGZiRGRMTnpock5FVnJhbU5HYjJwb1pERTJNVGR5YlZWcVdTMWhaWFEyTFhRd2dnRXJVa1JEVEVGTE5YVjVYMnhxTFhwQ1JYaFdXV3czV1U1ZlRuaFlZbTlFU1dnMFFTMTNTMGRtWjNwT1dZSUJJbEJNUkVsdlZVOW9VVkZRYkZoeGVqVlJXak5rZUMxc2FGOXdObEpqVUdWTGFuYXlBUVlLQkFnVkVBSSUzRBiB4OgYIgtzZWFyY2gtZmVlZA%3D%3D"), + endpoint: browse, ), corrected_query: None, ) diff --git a/src/client/snapshots/rustypipe__client__trends__tests__map_startpage.snap b/src/client/snapshots/rustypipe__client__trends__tests__map_startpage.snap index 934e318..5a1d548 100644 --- a/src/client/snapshots/rustypipe__client__trends__tests__map_startpage.snap +++ b/src/client/snapshots/rustypipe__client__trends__tests__map_startpage.snap @@ -5,7 +5,7 @@ expression: map_res.c Paginator( count: None, items: [ - SearchVideo( + VideoItem( id: "_cyJhGsXDDM", title: "Ultimate Criminal Canal Found Magnet Fishing! Police on the Hunt", length: Some(1096), @@ -21,7 +21,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCMLXec9-wpON8tZegnDsYLw", name: "Bondi Treasure Hunter", avatar: [ @@ -31,17 +31,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 700385, + view_count: Some(700385), is_live: false, is_short: false, - short_description: "Subscribe for more Treasure Hunting videos: https://tinyurl.com/yyl3zerk\n\nMy Magnet! (Use Discount code \'BONDI\'): https://magnetarmagnets.com/\nMy Dive System! (Use Bonus code \'BONDI\'): https://lddy...", + is_upcoming: false, + short_description: Some("Subscribe for more Treasure Hunting videos: https://tinyurl.com/yyl3zerk\n\nMy Magnet! (Use Discount code \'BONDI\'): https://magnetarmagnets.com/\nMy Dive System! (Use Bonus code \'BONDI\'): https://lddy..."), ), - SearchVideo( + VideoItem( id: "36YnV9STBqc", title: "The Good Life Radio\u{a0}•\u{a0}24/7 Live Radio | Best Relax House, Chillout, Study, Running, Gym, Happy Music", length: None, @@ -57,7 +58,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", avatar: [ @@ -67,17 +68,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 7202, - is_live: false, + view_count: Some(7202), + is_live: true, is_short: false, - short_description: "The Good Life is live streaming the best of Relaxing & Chill House Music, Deep House, Tropical House, EDM, Dance & Pop as well as Music for Sleep, Focus, Study, Workout, Gym, Running etc. in...", + is_upcoming: false, + short_description: Some("The Good Life is live streaming the best of Relaxing & Chill House Music, Deep House, Tropical House, EDM, Dance & Pop as well as Music for Sleep, Focus, Study, Workout, Gym, Running etc. in..."), ), - SearchVideo( + VideoItem( id: "YYD1qgH5qC4", title: "چند شنبه با سینــا | فصل چهـارم | قسمت 5 | با حضور نازنین انصاری مدیر روزنامه کیهان لندن", length: Some(3261), @@ -93,7 +95,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCzH_7hfL6Jd1H0WpNO_eryQ", name: "MBC PERSIA", avatar: [ @@ -103,17 +105,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("14 hours ago"), - view_count: 104344, + view_count: Some(104344), is_live: false, is_short: false, - short_description: "#mbcpersia\n#chandshanbeh\n#چندشنبه\n\nشبكه ام بى سى پرشيا را از حساب هاى مختلف در شبكه هاى اجتماعى دنبال كنيد\n►MBCPERSIA on Facebook:...", + is_upcoming: false, + short_description: Some("#mbcpersia\n#chandshanbeh\n#چندشنبه\n\nشبكه ام بى سى پرشيا را از حساب هاى مختلف در شبكه هاى اجتماعى دنبال كنيد\n►MBCPERSIA on Facebook:..."), ), - SearchVideo( + VideoItem( id: "BeJqgI6rw9k", title: "your city is full of fake buildings, here\'s why", length: Some(725), @@ -129,7 +132,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCqVEHtQoXHmUCfJ-9smpTSg", name: "Answer in Progress", avatar: [ @@ -139,17 +142,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 days ago"), - view_count: 1447008, + view_count: Some(1447008), is_live: false, is_short: false, - short_description: "Save 33% on your first Native Deodorant Pack - normally $39, you’ll get it for $26! Click here https://bit.ly/nativeanswer1 and use my code ANSWER #AD\n\nSomewhere on your street there may...", + is_upcoming: false, + short_description: Some("Save 33% on your first Native Deodorant Pack - normally $39, you’ll get it for $26! Click here https://bit.ly/nativeanswer1 and use my code ANSWER #AD\n\nSomewhere on your street there may..."), ), - SearchVideo( + VideoItem( id: "ma28eWd1oyA", title: "Post Malone, Maroon 5, Adele, Taylor Swift, Ed Sheeran, Shawn Mendes, Pop Hits 2020 Part 6", length: Some(29989), @@ -160,7 +164,7 @@ Paginator( height: 270, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCldQuUMYTUGrjvcU2vaPSFQ", name: "Music Library", avatar: [ @@ -170,17 +174,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("Streamed 2 years ago"), - view_count: 1861814, + view_count: Some(1861814), is_live: false, is_short: false, - short_description: "Post Malone, Maroon 5, Adele, Taylor Swift, Ed Sheeran, Shawn Mendes, Charlie Puth Pop Hits 2020\nPost Malone, Maroon 5, Adele, Taylor Swift, Ed Sheeran, Shawn Mendes, Charlie Puth Pop Hits...", + is_upcoming: false, + short_description: Some("Post Malone, Maroon 5, Adele, Taylor Swift, Ed Sheeran, Shawn Mendes, Charlie Puth Pop Hits 2020\nPost Malone, Maroon 5, Adele, Taylor Swift, Ed Sheeran, Shawn Mendes, Charlie Puth Pop Hits..."), ), - SearchVideo( + VideoItem( id: "mL2LBRM5GBI", title: "Salahs 6-Minuten-Hattrick & Firmino-Gala: Rangers - FC Liverpool 1:7 | UEFA Champions League | DAZN", length: Some(355), @@ -196,7 +201,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCB-GdMjyokO9lZkKU_oIK6g", name: "DAZN UEFA Champions League", avatar: [ @@ -206,17 +211,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 1471667, + view_count: Some(1471667), is_live: false, is_short: false, - short_description: "In der Liga läuft es für die Reds weiterhin nicht rund. Am vergangenen Spieltag gab es gegen Arsenal eine 2:3-Niederlage, am Sonntag trifft man auf Man City. Die Champions League soll für...", + is_upcoming: false, + short_description: Some("In der Liga läuft es für die Reds weiterhin nicht rund. Am vergangenen Spieltag gab es gegen Arsenal eine 2:3-Niederlage, am Sonntag trifft man auf Man City. Die Champions League soll für..."), ), - SearchVideo( + VideoItem( id: "Ang18qz2IeQ", title: "Satisfying Videos of Workers Doing Their Job Perfectly", length: Some(1186), @@ -232,7 +238,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCYenDLnIHsoqQ6smwKXQ7Hg", name: "#Mind Warehouse", avatar: [ @@ -242,17 +248,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 173121, + view_count: Some(173121), is_live: false, is_short: false, - short_description: "TechZone ► https://goo.gl/Gj3wZs \n\n #incrediblemoments #mindwarehouse #IncredibleMoments #CaughtOnCamera #InterestingFacts \n\nYou can endlessly watch how others work, but in this selection,...", + is_upcoming: false, + short_description: Some("TechZone ► https://goo.gl/Gj3wZs \n\n #incrediblemoments #mindwarehouse #IncredibleMoments #CaughtOnCamera #InterestingFacts \n\nYou can endlessly watch how others work, but in this selection,..."), ), - SearchVideo( + VideoItem( id: "fjHN4jsJnEU", title: "I Made 200 Players Simulate Survival Island in Minecraft...", length: Some(2361), @@ -268,7 +275,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCqt4mmAqLmH-AwXz31URJsw", name: "Sword4000", avatar: [ @@ -278,17 +285,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 days ago"), - view_count: 751909, + view_count: Some(751909), is_live: false, is_short: false, - short_description: "200 Players Simulate Survival Island Civilizations in Minecraft...\n-------------------------------------------------------------------\nI invited 200 Players to a Survival Island and let them...", + is_upcoming: false, + short_description: Some("200 Players Simulate Survival Island Civilizations in Minecraft...\n-------------------------------------------------------------------\nI invited 200 Players to a Survival Island and let them..."), ), - SearchVideo( + VideoItem( id: "FI1XrdBJIUI", title: "Epic Construction Fails | Expensive Fails Compilation | FailArmy", length: Some(631), @@ -304,7 +312,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCPDis9pjXuqyI7RYLJ-TTSA", name: "FailArmy", avatar: [ @@ -314,17 +322,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 2226471, + view_count: Some(2226471), is_live: false, is_short: false, - short_description: "I don\'t think so, Tim. ►►► Submit your videos for the chance to be featured 🔗 https://www.failarmy.com/pages/submit-video ▼ Follow us for more fails! https://linktr.ee/failarmy\n#fails...", + is_upcoming: false, + short_description: Some("I don\'t think so, Tim. ►►► Submit your videos for the chance to be featured 🔗 https://www.failarmy.com/pages/submit-video ▼ Follow us for more fails! https://linktr.ee/failarmy\n#fails..."), ), - SearchVideo( + VideoItem( id: "MXdplejK8vU", title: "Chilly autumn Jazz ☕ Smooth September Jazz & Bossa Nova for a great relaxing weekend", length: Some(86403), @@ -340,7 +349,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCeGJ6v6KQt0s88hGKMfybuw", name: "Cozy Jazz Music", avatar: [ @@ -350,17 +359,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 148743, + view_count: Some(148743), is_live: false, is_short: false, - short_description: "Chilly autumn Jazz ☕ Smooth September Jazz & Bossa Nova for a great relaxing weekend\nhttps://youtu.be/MXdplejK8vU\n*******************************************\nSounds available on: Jazz Bossa...", + is_upcoming: false, + short_description: Some("Chilly autumn Jazz ☕ Smooth September Jazz & Bossa Nova for a great relaxing weekend\nhttps://youtu.be/MXdplejK8vU\n*******************************************\nSounds available on: Jazz Bossa..."), ), - SearchVideo( + VideoItem( id: "Jri4_9vBFiQ", title: "Top 100 Best Classic Rock Songs Of All Time 🔥 R.E.M, Queen, Metallica,Guns N’ Roses,Bon Jovi, U2,CCR", length: None, @@ -376,7 +386,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCiIWdzEVNH8okhlapR9a-xA", name: "Rock Music", avatar: [ @@ -386,17 +396,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 192, - is_live: false, + view_count: Some(192), + is_live: true, is_short: false, - short_description: "Top 100 Best Classic Rock Songs Of All Time 🔥 R.E.M, Queen, Metallica,Guns N’ Roses,Bon Jovi, U2,CCR\nTop 100 Best Classic Rock Songs Of All Time 🔥 R.E.M, Queen, Metallica,Guns N’...", + is_upcoming: false, + short_description: Some("Top 100 Best Classic Rock Songs Of All Time 🔥 R.E.M, Queen, Metallica,Guns N’ Roses,Bon Jovi, U2,CCR\nTop 100 Best Classic Rock Songs Of All Time 🔥 R.E.M, Queen, Metallica,Guns N’..."), ), - SearchVideo( + VideoItem( id: "ll4d5Lt-Ie8", title: "Relaxing Music Healing Stress, Anxiety and Depressive States Heal Mind, Body and Soul | Sleep music", length: Some(42896), @@ -412,7 +423,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCNS3dqFGBPhxHmOigehpBeg", name: "Love YourSelf", avatar: [ @@ -422,17 +433,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("Streamed 5 months ago"), - view_count: 5363904, + view_count: Some(5363904), is_live: false, is_short: false, - short_description: "The study found that listening to relaxing music of the patient\'s choice resulted in \"significant pain relief and increased mobility.\" Researchers believe that music relieves pain because listening...", + is_upcoming: false, + short_description: Some("The study found that listening to relaxing music of the patient\'s choice resulted in \"significant pain relief and increased mobility.\" Researchers believe that music relieves pain because listening..."), ), - SearchVideo( + VideoItem( id: "Dx2wbKLokuQ", title: "W. Putin: Die Sehnsucht nach dem Imperium | Mit offenen Karten | ARTE", length: Some(729), @@ -448,7 +460,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCLLibJTCy3sXjHLVaDimnpQ", name: "ARTEde", avatar: [ @@ -458,17 +470,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 539838, + view_count: Some(539838), is_live: false, is_short: false, - short_description: "Jede Woche untersucht „Mit offenen Karten“ die politischen Kräfteverhältnisse in der ganzen Welt anhand detaillierter geografischer Karten \n\nIm Februar 2022 rechtfertigte Wladimir Putin...", + is_upcoming: false, + short_description: Some("Jede Woche untersucht „Mit offenen Karten“ die politischen Kräfteverhältnisse in der ganzen Welt anhand detaillierter geografischer Karten \n\nIm Februar 2022 rechtfertigte Wladimir Putin..."), ), - SearchVideo( + VideoItem( id: "jfKfPfyJRdk", title: "lofi hip hop radio - beats to relax/study to", length: None, @@ -484,7 +497,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCSJ4gkVC6NrvII8umztf0Ow", name: "Lofi Girl", avatar: [ @@ -494,17 +507,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 21262, - is_live: false, + view_count: Some(21262), + is_live: true, is_short: false, - short_description: "🤗 Thank you for listening, I hope you will have a good time here\n\n💽 | Get the latest vinyl (limited edition)\n→ https://vinyl-lofirecords.com/\n\n🎼 | Listen on Spotify, Apple music...", + is_upcoming: false, + short_description: Some("🤗 Thank you for listening, I hope you will have a good time here\n\n💽 | Get the latest vinyl (limited edition)\n→ https://vinyl-lofirecords.com/\n\n🎼 | Listen on Spotify, Apple music..."), ), - SearchVideo( + VideoItem( id: "qmrzTUmZ4UU", title: "850€ für den Verrat am System - UCS AT-AT LEGO® Star Wars 75313", length: Some(2043), @@ -520,7 +534,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_EZd3lsmxudu3IQzpTzOgw", name: "Held der Steine Inh. Thomas Panke", avatar: [ @@ -530,17 +544,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 days ago"), - view_count: 600150, + view_count: Some(600150), is_live: false, is_short: false, - short_description: "Star Wars - erschienen 2021 - 6749 Teile\n\nDieses Set bei Amazon*:\nhttps://amzn.to/3yu9dHX\n\nErwähnt im Video*:\nTassen https://bit.ly/HdSBausteinecke\nBig Boy https://bit.ly/BBLokBigBoy\nBurg...", + is_upcoming: false, + short_description: Some("Star Wars - erschienen 2021 - 6749 Teile\n\nDieses Set bei Amazon*:\nhttps://amzn.to/3yu9dHX\n\nErwähnt im Video*:\nTassen https://bit.ly/HdSBausteinecke\nBig Boy https://bit.ly/BBLokBigBoy\nBurg..."), ), - SearchVideo( + VideoItem( id: "t0Q2otsqC4I", title: "Tom & Jerry | Tom & Jerry in Full Screen | Classic Cartoon Compilation | WB Kids", length: Some(1298), @@ -556,7 +571,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC9trsD1jCTXXtN3xIOIU8gg", name: "WB Kids", avatar: [ @@ -566,17 +581,18 @@ Paginator( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("10 months ago"), - view_count: 252381571, + view_count: Some(252381571), is_live: false, is_short: false, - short_description: "Did you know that there are only 25 classic Tom & Jerry episodes that were displayed in a widescreen CinemaScope from the 1950s? Enjoy a compilation filled with some of the best moments from...", + is_upcoming: false, + short_description: Some("Did you know that there are only 25 classic Tom & Jerry episodes that were displayed in a widescreen CinemaScope from the 1950s? Enjoy a compilation filled with some of the best moments from..."), ), - SearchVideo( + VideoItem( id: "zE-a5eqvlv8", title: "Dua Lipa, Coldplay, Martin Garrix & Kygo, The Chainsmokers Style - Feeling Me", length: None, @@ -592,7 +608,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCX-USfenzQlhrEJR1zD5IYw", name: "Deep Mood.", avatar: [ @@ -602,17 +618,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 955, - is_live: false, + view_count: Some(955), + is_live: true, is_short: false, - short_description: "#Summermix #DeepHouse #DeepHouseSummerMix\nDua Lipa, Coldplay, Martin Garrix & Kygo, The Chainsmokers Style - Feeling Me\n\n🎵 All songs in this spotify playlist: https://spoti.fi/2TJ4Dyj\nSubmit...", + is_upcoming: false, + short_description: Some("#Summermix #DeepHouse #DeepHouseSummerMix\nDua Lipa, Coldplay, Martin Garrix & Kygo, The Chainsmokers Style - Feeling Me\n\n🎵 All songs in this spotify playlist: https://spoti.fi/2TJ4Dyj\nSubmit..."), ), - SearchVideo( + VideoItem( id: "HxCcKzRAGWk", title: "(Music for Man ) Relaxing Whiskey Blues Music - Modern Electric Guitar Blues - JAZZ & BLUES", length: Some(42899), @@ -628,7 +645,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCGr-rTYtP1m-r_-ncspdVQQ", name: "JAZZ & BLUES", avatar: [ @@ -638,17 +655,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("Streamed 3 months ago"), - view_count: 3156236, + view_count: Some(3156236), is_live: false, is_short: false, - short_description: "-----------------------------------------------------------------------------------\n✔Thanks for watching! Have a nice day!\n✔Don\'t forget LIKE - SHARE - COMMENT\n#bluesmusic#slowblues#bluesrock...", + is_upcoming: false, + short_description: Some("-----------------------------------------------------------------------------------\n✔Thanks for watching! Have a nice day!\n✔Don\'t forget LIKE - SHARE - COMMENT\n#bluesmusic#slowblues#bluesrock..."), ), - SearchVideo( + VideoItem( id: "HlHYOdZePSE", title: "Healing Music for Anxiety Disorders, Fears, Depression and Eliminate Negative Thoughts", length: None, @@ -664,7 +682,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCqNYK5QArQRZSIR8v6_FCfA", name: "Tranquil Music", avatar: [ @@ -674,17 +692,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 1585, - is_live: false, + view_count: Some(1585), + is_live: true, is_short: false, - short_description: "Healing Music for Anxiety Disorders, Fears, Depression and Eliminate Negative Thoughts\n#HealingMusic #RelaxingMusic #TranquilMusic\n__________________________________\nMusic for:\nChakra healing....", + is_upcoming: false, + short_description: Some("Healing Music for Anxiety Disorders, Fears, Depression and Eliminate Negative Thoughts\n#HealingMusic #RelaxingMusic #TranquilMusic\n__________________________________\nMusic for:\nChakra healing...."), ), - SearchVideo( + VideoItem( id: "CJ2AH3LJeic", title: "Coldplay Greatest Hits Full Album 2022 New Songs of Coldplay 2022", length: Some(7781), @@ -700,7 +719,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCdK2lzwelugXGhR9SCWuEew", name: "PLAY MUSIC", avatar: [ @@ -710,17 +729,18 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 months ago"), - view_count: 5595965, + view_count: Some(5595965), is_live: false, is_short: false, - short_description: "▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬\nSubscribe channel for more videos:\n🔔Subscribe: https://bit.ly/2UbIZFv\n⚡Facebook: https://bitly.com.vn/gXDsC...", + is_upcoming: false, + short_description: Some("▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬\nSubscribe channel for more videos:\n🔔Subscribe: https://bit.ly/2UbIZFv\n⚡Facebook: https://bitly.com.vn/gXDsC..."), ), - SearchVideo( + VideoItem( id: "KJwzKxQ81iA", title: "Handmade Candy Making Collection / 수제 사탕 만들기 모음 / Korean Candy Store", length: Some(3152), @@ -736,7 +756,7 @@ Paginator( height: 404, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCdGwDjTgbSwQDZ8dYOdrplg", name: "Soon Films 순필름", avatar: [ @@ -746,17 +766,19 @@ Paginator( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 3127238, + view_count: Some(3127238), is_live: false, is_short: false, - short_description: "00:00 Handmade Candy Making\n13:43 Delicate Handmade Candy Making\n28:33 Rainbow Lollipop Handmade Candy Making\n39:10 Cute Handmade Candy Making", + is_upcoming: false, + short_description: Some("00:00 Handmade Candy Making\n13:43 Delicate Handmade Candy Making\n28:33 Rainbow Lollipop Handmade Candy Making\n39:10 Cute Handmade Candy Making"), ), ], ctoken: Some("4qmFsgKbAxIPRkV3aGF0X3RvX3dhdGNoGuoCQ0JoNmlBSk5aMjlKYjB0NmVtOWlTR3hxVFRSdlYyMHdTMkYzYjFwbFdGSm1ZMGRHYmxwV09YcGliVVozWXpKb2RtUkdPWGxhVjJSd1lqSTFhR0pDU1daWFZFSXhUbFpuZDFSV09YSldNRlp0WkRCT1JWTlZPV3BsU0U1WFZHNWtiRXhWY0ZSa1ZrSlRXbmh2ZEVGQlFteGlaMEZDVmxaTlFVRlZVa1pCUVVWQlVtdFdNMkZIUmpCWU0xSjJXRE5rYUdSSFRtOUJRVVZCUVZGRlFVRkJSVUZCVVVGQlFWRkZRVmxyUlVsQlFrbFVZMGRHYmxwV09YcGliVVozWXpKb2RtUkdPVEJpTW5Sc1ltaHZWRU5MVDNJeFpuSjROR1p2UTBaU1YwSm1RVzlrVkZWSlN6RnBTVlJEUzA5eU1XWnllRFJtYjBOR1VsZENaa0Z2WkZSVlNVc3hkbkZqZURjd1NrRm5aMW8lM0SaAhpicm93c2UtZmVlZEZFd2hhdF90b193YXRjaA%3D%3D"), visitor_data: Some("CgtjTXNGWnhNcjdORSiq8qmaBg%3D%3D"), + endpoint: browse, ) diff --git a/src/client/snapshots/rustypipe__client__trends__tests__map_trending.snap b/src/client/snapshots/rustypipe__client__trends__tests__map_trending.snap index 7d3166b..b50f9a1 100644 --- a/src/client/snapshots/rustypipe__client__trends__tests__map_trending.snap +++ b/src/client/snapshots/rustypipe__client__trends__tests__map_trending.snap @@ -3,7 +3,7 @@ source: src/client/trends.rs expression: map_res.c --- [ - SearchVideo( + VideoItem( id: "6T67I2w1G2U", title: "Extreme $1,000,000 Minecraft Challenge!", length: Some(643), @@ -24,7 +24,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCIPPMRA040LQr5QPyJEbmXA", name: "MrBeast Gaming", avatar: [ @@ -34,17 +34,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 2873209, + view_count: Some(2873209), is_live: false, is_short: false, - short_description: "Thank you to Undeniably Dairy for sponsoring this video! Check them out! http://www.bit.ly/UDMrBeast\n\nI challenged six YouTubers to compete for $1,000,000!\n\nSUBSCRIBE OR YOU\'LL HAVE BAD LUCK...", + is_upcoming: false, + short_description: Some("Thank you to Undeniably Dairy for sponsoring this video! Check them out! http://www.bit.ly/UDMrBeast\n\nI challenged six YouTubers to compete for $1,000,000!\n\nSUBSCRIBE OR YOU\'LL HAVE BAD LUCK..."), ), - SearchVideo( + VideoItem( id: "8TzH0ayIcdo", title: "The Darkest Story I\'ve Ever Read", length: Some(4383), @@ -65,7 +66,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC3cpN6gcJQqcCM6mxRUo_dA", name: "Wendigoon", avatar: [ @@ -75,17 +76,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 777753, + view_count: Some(777753), is_live: false, is_short: false, - short_description: "Get Honey for FREE today ▸ https://joinhoney.com/wendigoon\nHoney finds coupons with one click. Thanks to Honey for sponsoring!\n\nMy Links\n\nSecond channel/ Wendigang: https://www.youtube.com/channe...", + is_upcoming: false, + short_description: Some("Get Honey for FREE today ▸ https://joinhoney.com/wendigoon\nHoney finds coupons with one click. Thanks to Honey for sponsoring!\n\nMy Links\n\nSecond channel/ Wendigang: https://www.youtube.com/channe..."), ), - SearchVideo( + VideoItem( id: "s9PzYuVwCSE", title: "Lil Yachty - Poland (Directed by Cole Bennett)", length: Some(89), @@ -106,7 +108,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCtylTUUVIGY_i5afsQYeBZA", name: "Lyrical Lemonade", avatar: [ @@ -116,17 +118,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 4245789, + view_count: Some(4245789), is_live: false, is_short: false, - short_description: "Lyrical Lemonade Presents\nLil Yachty - Poland (Official Music Video)\n\nDirected & Edited by Cole Bennett\nSong Produced by F1LTHY\n\nDirector of Photography - Franklin Ricart\nColorist - Loren White...", + is_upcoming: false, + short_description: Some("Lyrical Lemonade Presents\nLil Yachty - Poland (Official Music Video)\n\nDirected & Edited by Cole Bennett\nSong Produced by F1LTHY\n\nDirector of Photography - Franklin Ricart\nColorist - Loren White..."), ), - SearchVideo( + VideoItem( id: "y8qhSduN6sk", title: "PC Games on Console - Scott The Woz", length: Some(1912), @@ -147,7 +150,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC4rqhyiTs7XyuODcECvuiiQ", name: "Scott The Woz", avatar: [ @@ -157,17 +160,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("20 hours ago"), - view_count: 528686, + view_count: Some(528686), is_live: false, is_short: false, - short_description: "Scott plays The Sims 2 Pets without a caps lock key.\n\nTwitter: https://www.twitter.com/ScottTheWoz\r\nFacebook: https://www.facebook.com/ScottTheWoz/\r\nInstagram: https://www.instagram.com/scottthewoz...", + is_upcoming: false, + short_description: Some("Scott plays The Sims 2 Pets without a caps lock key.\n\nTwitter: https://www.twitter.com/ScottTheWoz\r\nFacebook: https://www.facebook.com/ScottTheWoz/\r\nInstagram: https://www.instagram.com/scottthewoz..."), ), - SearchVideo( + VideoItem( id: "U9HAaHc3wnc", title: "Guess Iono’s Partner Pokémon! 🤔 | Pokémon Scarlet and Pokémon Violet", length: Some(211), @@ -188,7 +192,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCFctpiB_Hnlk3ejWfHqSm6Q", name: "The Official Pokémon YouTube channel", avatar: [ @@ -198,17 +202,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 1157471, + view_count: Some(1157471), is_live: false, is_short: false, - short_description: "Meet Iono, an influencer, streamer, and Gym Leader who specializes in Electric-type Pokémon ⚡\u{fe0f}\n\nCan you guess Iono’s partner Pokémon? 🤔\n\nPre-order Pokémon Scarlet & Pokémon Violet...", + is_upcoming: false, + short_description: Some("Meet Iono, an influencer, streamer, and Gym Leader who specializes in Electric-type Pokémon ⚡\u{fe0f}\n\nCan you guess Iono’s partner Pokémon? 🤔\n\nPre-order Pokémon Scarlet & Pokémon Violet..."), ), - SearchVideo( + VideoItem( id: "MBzi6hRrkww", title: "Celebrating Tito Puente", length: Some(65), @@ -229,7 +234,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCdq61m8s_48EhJ5OM_MCeGw", name: "GoogleDoodles", avatar: [ @@ -239,17 +244,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 19579375, + view_count: Some(19579375), is_live: false, is_short: false, - short_description: "In honor of US Hispanic Heritage Month, today’s animated video Doodle celebrates the life and legacy of American “Nuyorican” musician and internationally-renowned entertainer, Tito Puente....", + is_upcoming: false, + short_description: Some("In honor of US Hispanic Heritage Month, today’s animated video Doodle celebrates the life and legacy of American “Nuyorican” musician and internationally-renowned entertainer, Tito Puente...."), ), - SearchVideo( + VideoItem( id: "DvkTX-AquQo", title: "Impossible 0.00001% Odds!", length: Some(481), @@ -270,7 +276,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCUaT_39o1x6qWjz7K2pWcgw", name: "Beast Reacts", avatar: [ @@ -280,17 +286,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 4850190, + view_count: Some(4850190), is_live: false, is_short: false, - short_description: "SUBSCRIBE OR YOU\'LL HAVE BAD LUCK\n\nCHECK OUT THESE CHANNELS OR ELSE\n\nFA 92\nhttps://www.youtube.com/watch?v=oaUH-nAg6UU\n\nRM Media\nhttps://www.youtube.com/watch?v=DFG-vaT0qgk\n\nThe Dodo\nhttps://cdn.jw...", + is_upcoming: false, + short_description: Some("SUBSCRIBE OR YOU\'LL HAVE BAD LUCK\n\nCHECK OUT THESE CHANNELS OR ELSE\n\nFA 92\nhttps://www.youtube.com/watch?v=oaUH-nAg6UU\n\nRM Media\nhttps://www.youtube.com/watch?v=DFG-vaT0qgk\n\nThe Dodo\nhttps://cdn.jw..."), ), - SearchVideo( + VideoItem( id: "T-8fCPT-ZKI", title: "DDG - Bulletproof Maybach (Official Music Video) ft. Offset", length: Some(189), @@ -311,7 +318,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCKqqDlf6lfo3ChRA4-gzusQ", name: "DDG", avatar: [ @@ -321,17 +328,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 440722, + view_count: Some(440722), is_live: false, is_short: false, - short_description: "DDG ft. Offset - Bulletproof Maybach (Official Music Video)\n\n\"It\'s Not Me It\'s You\" available at: https://DDG.lnk.to/ItsNotMeItsYou \n\nFollow DDG:\nhttps://twitter.com/pontiacmadeddg \nhttps://www.fac...", + is_upcoming: false, + short_description: Some("DDG ft. Offset - Bulletproof Maybach (Official Music Video)\n\n\"It\'s Not Me It\'s You\" available at: https://DDG.lnk.to/ItsNotMeItsYou \n\nFollow DDG:\nhttps://twitter.com/pontiacmadeddg \nhttps://www.fac..."), ), - SearchVideo( + VideoItem( id: "dFlDRhvM4L0", title: "『チェンソーマン』ノンクレジットオープニング / CHAINSAW MAN Opening│米津玄師 「KICK BACK」", length: Some(90), @@ -352,7 +360,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCjfAEJZdfbIjVHdo5yODfyQ", name: "MAPPA CHANNEL", avatar: [ @@ -362,17 +370,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 10285052, + view_count: Some(10285052), is_live: false, is_short: false, - short_description: "オープニング・テーマ\n米津玄師\u{3000}「KICK BACK」 Kenshi Yonezu – KICK BACK\n作詞・作曲\u{3000}米津玄師\n\u{3000}\u{3000}\u{3000}編曲\u{3000}米津玄師\u{3000}常田大希 (King Gnu / millennium...", + is_upcoming: false, + short_description: Some("オープニング・テーマ\n米津玄師\u{3000}「KICK BACK」 Kenshi Yonezu – KICK BACK\n作詞・作曲\u{3000}米津玄師\n\u{3000}\u{3000}\u{3000}編曲\u{3000}米津玄師\u{3000}常田大希 (King Gnu / millennium..."), ), - SearchVideo( + VideoItem( id: "G9W8CSckzAc", title: "why I disappeared", length: Some(461), @@ -393,7 +402,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCgTaH6nm8sby0hpb2DSKNhg", name: "Boffy", avatar: [ @@ -403,17 +412,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("17 hours ago"), - view_count: 207145, + view_count: Some(207145), is_live: false, is_short: false, - short_description: "", + is_upcoming: false, + short_description: None, ), - SearchVideo( + VideoItem( id: "PuOUI2kwftA", title: "Brooklyn\'s Wedding Day Vlog | Behind the Scenes", length: Some(1265), @@ -434,7 +444,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC6QWhGQqf0YDYdRb0n6ojWw", name: "Brooklyn and Bailey", avatar: [ @@ -444,17 +454,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("23 hours ago"), - view_count: 395113, + view_count: Some(395113), is_live: false, is_short: false, - short_description: "The video you have all been waiting for is here! Our wedding vlog! We had so many people who filmed and helped make this video happen. Dakota and I were so excited to spend the weekend in Californi...", + is_upcoming: false, + short_description: Some("The video you have all been waiting for is here! Our wedding vlog! We had so many people who filmed and helped make this video happen. Dakota and I were so excited to spend the weekend in Californi..."), ), - SearchVideo( + VideoItem( id: "lkOGhJX6LKU", title: "Social Security payments set for big increase; here’s what you need to know", length: Some(120), @@ -475,7 +486,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCnwI-VN5jXWIGQKOI9PMDMw", name: "WPRI", avatar: [ @@ -485,17 +496,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("22 hours ago"), - view_count: 227728, + view_count: Some(227728), is_live: false, is_short: false, - short_description: "Tens of millions of older Americans are about to get what may be the biggest raise of their lifetimes.\n\nStay in the know with WPRI 12 News. Local news, weather, sports, and award winning investigat...", + is_upcoming: false, + short_description: Some("Tens of millions of older Americans are about to get what may be the biggest raise of their lifetimes.\n\nStay in the know with WPRI 12 News. Local news, weather, sports, and award winning investigat..."), ), - SearchVideo( + VideoItem( id: "zkvIzKwzYNc", title: "Kep1er 케플러 | ‘We Fresh\' M/V", length: Some(225), @@ -516,7 +528,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC8whlOg70m2Yr3qSMjUhh0g", name: "Kep1er", avatar: [ @@ -526,17 +538,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 hours ago"), - view_count: 1875402, + view_count: Some(1875402), is_live: false, is_short: false, - short_description: "Kep1er 3rd Mini Album ‘TROUBLESHOOTER\' \n2022.10.13 THU 6PM (KST)\n\nKep1er Official \nInstagram : https://www.instagram.com/official.kep1er/\nTwitter : https://twitter.com/official_kep1er\nFacebook...", + is_upcoming: false, + short_description: Some("Kep1er 3rd Mini Album ‘TROUBLESHOOTER\' \n2022.10.13 THU 6PM (KST)\n\nKep1er Official \nInstagram : https://www.instagram.com/official.kep1er/\nTwitter : https://twitter.com/official_kep1er\nFacebook..."), ), - SearchVideo( + VideoItem( id: "foMQG_Bpcag", title: "*After 4* DESTROYED my last brain cell", length: Some(2169), @@ -557,7 +570,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCF_votze88WRDSEREe9s3aQ", name: "Dylan Is In Trouble", avatar: [ @@ -567,17 +580,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 449633, + view_count: Some(449633), is_live: false, is_short: false, - short_description: "Go to http://audible.com/dylanisintrouble or text \'dylanisintrouble\' to 500 500 to get your free 30 day trial!\n\nTwitter: https://twitter.com/theDMatthews\nInstagram: https://www.instagram.com/neat_d...", + is_upcoming: false, + short_description: Some("Go to http://audible.com/dylanisintrouble or text \'dylanisintrouble\' to 500 500 to get your free 30 day trial!\n\nTwitter: https://twitter.com/theDMatthews\nInstagram: https://www.instagram.com/neat_d..."), ), - SearchVideo( + VideoItem( id: "iquXFFSEKyE", title: "NLE Choppa - Do It Again (ft. 2Rare) [HipHop Dance Musical] MEMPHIS EDITION", length: Some(239), @@ -598,7 +612,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCWICXNlSLc7eeNazpzUZcLg", name: "NLE CHOPPA", avatar: [ @@ -608,17 +622,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("22 hours ago"), - view_count: 311006, + view_count: Some(311006), is_live: false, is_short: false, - short_description: "Stream \"Do It Again\" now: https://nlechoppax2rare.lnk.to/doitagain\n\nWEBSITE: HERBS \nhttps://www.nlehealthandwellness.com 💜\nWEBSITE: MERCH\nhttps://www.nlehealthandwellness.com/new-collection...", + is_upcoming: false, + short_description: Some("Stream \"Do It Again\" now: https://nlechoppax2rare.lnk.to/doitagain\n\nWEBSITE: HERBS \nhttps://www.nlehealthandwellness.com 💜\nWEBSITE: MERCH\nhttps://www.nlehealthandwellness.com/new-collection..."), ), - SearchVideo( + VideoItem( id: "ijj_hheGEi0", title: "Queen - Face It Alone (Official Lyric Video)", length: Some(257), @@ -639,7 +654,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCiMhD4jzUqG-IgPzUmmytRQ", name: "Queen Official", avatar: [ @@ -649,17 +664,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("10 hours ago"), - view_count: 1016314, + view_count: Some(1016314), is_live: false, is_short: false, - short_description: "QUEEN rediscovered track featuring Freddie Mercury ‘FACE IT ALONE’ arrives as digital single release Thursday October 13\nPrecedes arrival of Queen ‘The Miracle Collector’s Edition’...", + is_upcoming: false, + short_description: Some("QUEEN rediscovered track featuring Freddie Mercury ‘FACE IT ALONE’ arrives as digital single release Thursday October 13\nPrecedes arrival of Queen ‘The Miracle Collector’s Edition’..."), ), - SearchVideo( + VideoItem( id: "nwMxp7mRbx4", title: "Dimension 20: Neverafter Trailer", length: Some(154), @@ -680,7 +696,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCC8zWIx8aBQme-x1nX9iZ0A", name: "Dimension 20", avatar: [ @@ -690,17 +706,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 205272, + view_count: Some(205272), is_live: false, is_short: false, - short_description: "Not all fairy tales end with a happily ever after. Premieres November 30th on Dropout. FAQ here: https://bit.ly/D20NeverafterFAQ\n\nWelcome to Dimension 20, Dropout.tv\'s anthology actualplay...", + is_upcoming: false, + short_description: Some("Not all fairy tales end with a happily ever after. Premieres November 30th on Dropout. FAQ here: https://bit.ly/D20NeverafterFAQ\n\nWelcome to Dimension 20, Dropout.tv\'s anthology actualplay..."), ), - SearchVideo( + VideoItem( id: "7IGD5URBGZ8", title: "We Got Engaged", length: Some(1325), @@ -721,7 +738,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCkDG7yPqJBi_V2qGPRZHI_w", name: "Jayco & Val", avatar: [ @@ -731,17 +748,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 254375, + view_count: Some(254375), is_live: false, is_short: false, - short_description: "Valentina @Basic Valentina \n\nInstagram: https://www.instagram.com/basicvalent...\nTikTok: https://vm.tiktok.com/ZM8Gsmm4B/\nYouTube: https://youtube.com/channel/UCQxnOdDS...\n\nJayco @Jaycoset...", + is_upcoming: false, + short_description: Some("Valentina @Basic Valentina \n\nInstagram: https://www.instagram.com/basicvalent...\nTikTok: https://vm.tiktok.com/ZM8Gsmm4B/\nYouTube: https://youtube.com/channel/UCQxnOdDS...\n\nJayco @Jaycoset..."), ), - SearchVideo( + VideoItem( id: "eKAIQDxai9Y", title: "I remade every mob into Rainbow Friends in Minecraft", length: Some(811), @@ -762,7 +780,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCoRDf_M8ljQq5V_rR8CSzww", name: "Kipper", avatar: [ @@ -772,17 +790,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 337002, + view_count: Some(337002), is_live: false, is_short: false, - short_description: "I remade these Minecraft mobs into Rainbow Friends characters! Check them out and let us know which one was your favorite! \n\n✅ SUBSCRIBE TO Kipper ► https://www.youtube.com/channel/UCoRDf_M8ljQ...", + is_upcoming: false, + short_description: Some("I remade these Minecraft mobs into Rainbow Friends characters! Check them out and let us know which one was your favorite! \n\n✅ SUBSCRIBE TO Kipper ► https://www.youtube.com/channel/UCoRDf_M8ljQ..."), ), - SearchVideo( + VideoItem( id: "5sRVxb2wkGM", title: "We Bought Every Weird Ad We Saw", length: Some(1602), @@ -803,7 +822,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCfbnTUxUech4P1XgYUwYuKA", name: "Cold Ones", avatar: [ @@ -813,17 +832,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 1170050, + view_count: Some(1170050), is_live: false, is_short: false, - short_description: "We See It? We Buy It! NO EXCEPTIONS\n💃 GET OUR NEW LIMITED WAIFU CUPS 👉🏻 https://bit.ly/coldoneswaifu\n🌈 Get 10% OFF OUR CLOTHES with code \"COLDONES\" 👉🏻 https://bit.ly/coolshirtzz...", + is_upcoming: false, + short_description: Some("We See It? We Buy It! NO EXCEPTIONS\n💃 GET OUR NEW LIMITED WAIFU CUPS 👉🏻 https://bit.ly/coldoneswaifu\n🌈 Get 10% OFF OUR CLOTHES with code \"COLDONES\" 👉🏻 https://bit.ly/coolshirtzz..."), ), - SearchVideo( + VideoItem( id: "9gbScp1JVN4", title: "Making Renaissance Costumes IN ONE DAY[ish]", length: Some(1317), @@ -844,7 +864,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCONTNY-QxA-UVtpR7vWW6Pg", name: "Micarah Tewers", avatar: [ @@ -854,17 +874,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 213453, + view_count: Some(213453), is_live: false, is_short: false, - short_description: "At least watch the last 5 minutes :) Btw You can thrift my picks at https://thredup.com/x/micarah and use my code MICARAH for an extra 30% off and free shipping on your first order(Offer expires...", + is_upcoming: false, + short_description: Some("At least watch the last 5 minutes :) Btw You can thrift my picks at https://thredup.com/x/micarah and use my code MICARAH for an extra 30% off and free shipping on your first order(Offer expires..."), ), - SearchVideo( + VideoItem( id: "qRao6FARFRo", title: "TURN THE TIDES - Harbor Agent Trailer // VALORANT", length: Some(228), @@ -885,7 +906,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC8CX0LD98EDXl4UYX1MDCXg", name: "VALORANT", avatar: [ @@ -895,17 +916,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 2530745, + view_count: Some(2530745), is_live: false, is_short: false, - short_description: "Welcome to the team, Harbor.\n\nHailing from the coast of India, this new Controller Agent commands a mix of tide and torrent to shield allies and pummel opponents.\n\nMade in partnership with...", + is_upcoming: false, + short_description: Some("Welcome to the team, Harbor.\n\nHailing from the coast of India, this new Controller Agent commands a mix of tide and torrent to shield allies and pummel opponents.\n\nMade in partnership with..."), ), - SearchVideo( + VideoItem( id: "F8sGGKxSYNM", title: "Chares Oliveira: I’ll shock the world vs. Islam Makhachev at UFC 280 | ESPN MMA", length: Some(231), @@ -926,7 +948,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCO4AcsPKEkIqDmbeiZLfd1A", name: "ESPN MMA", avatar: [ @@ -936,17 +958,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 552568, + view_count: Some(552568), is_live: false, is_short: false, - short_description: "ESPN MMA’s Brett Okamoto speaks with Charles Oliveira about his lightweight title fight against Islam Makhachev at UFC 280 in Abu Dhabi.\n\n#UFC #UFC280 #Oliveira\n✔ For more UFC, sign up...", + is_upcoming: false, + short_description: Some("ESPN MMA’s Brett Okamoto speaks with Charles Oliveira about his lightweight title fight against Islam Makhachev at UFC 280 in Abu Dhabi.\n\n#UFC #UFC280 #Oliveira\n✔ For more UFC, sign up..."), ), - SearchVideo( + VideoItem( id: "ZnQP13rYpUY", title: "Rochy RD, Tivi Gunz , Harryson, Onguito Wa, El Perrote Wz - Lokisla (Video Oficial) @Izy Music", length: Some(265), @@ -967,7 +990,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCLCCG11dS-HyB3up3OCRV_w", name: "Tivi Gunz", avatar: [ @@ -977,17 +1000,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 1028903, + view_count: Some(1028903), is_live: false, is_short: false, - short_description: "Lokisla By Tivi Gunz, Rochy RD, Harryson, Onguito Wa, El Perrote Wz\nDisponible Ya: https://lnk.to/Lokisla\nProd By Zunna / Directed By Izy Films, R14 Films\n\nSubscribete: \nhttps://lnk.to/TiviGunz...", + is_upcoming: false, + short_description: Some("Lokisla By Tivi Gunz, Rochy RD, Harryson, Onguito Wa, El Perrote Wz\nDisponible Ya: https://lnk.to/Lokisla\nProd By Zunna / Directed By Izy Films, R14 Films\n\nSubscribete: \nhttps://lnk.to/TiviGunz..."), ), - SearchVideo( + VideoItem( id: "WArWsWRmdJw", title: "I made GeoGuessr in Among Us to challenge my friends...", length: Some(1340), @@ -1008,7 +1032,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCUT8RoNBTJvwW1iErP6-b-A", name: "Disguised Toast", avatar: [ @@ -1018,17 +1042,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 493539, + view_count: Some(493539), is_live: false, is_short: false, - short_description: "Toast, Sykkuno and Valkyrae test their Among Us knowledge in a brand new way to play Among Us, Among Us GeoGuessr.\n\nSubscribe to Disguised Toast! ►http://bit.ly/1cRxhZa\n\nWatch me Live on...", + is_upcoming: false, + short_description: Some("Toast, Sykkuno and Valkyrae test their Among Us knowledge in a brand new way to play Among Us, Among Us GeoGuessr.\n\nSubscribe to Disguised Toast! ►http://bit.ly/1cRxhZa\n\nWatch me Live on..."), ), - SearchVideo( + VideoItem( id: "wP9zsx04fWY", title: "WE ARE COMING! to a city near you!", length: Some(59), @@ -1049,7 +1074,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCdvlHk5SZWwr9HjUcwtu8ng", name: "blink-182", avatar: [ @@ -1059,17 +1084,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 966225, + view_count: Some(966225), is_live: false, is_short: false, - short_description: "We’re coming. Tour’s coming. Album’s coming. Tom’s coming. \nTickets for the world tour go on sale starting Monday, 10/17 at 10am local\nNew Single EDGING out on 10/14\nEverything coming...", + is_upcoming: false, + short_description: Some("We’re coming. Tour’s coming. Album’s coming. Tom’s coming. \nTickets for the world tour go on sale starting Monday, 10/17 at 10am local\nNew Single EDGING out on 10/14\nEverything coming..."), ), - SearchVideo( + VideoItem( id: "Wz0Gb4_Q5rM", title: "Mariners vs. Astros ALDS Game 1 Highlights (10/11/22) | MLB Highlights", length: Some(584), @@ -1090,7 +1116,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC3RPfeyaEIPosC4eIcNr4Gw", name: "Houston Astros", avatar: [ @@ -1100,17 +1126,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 185196, + view_count: Some(185196), is_live: false, is_short: false, - short_description: "Mariners vs. Astros full game highlights from 10/11/22, presented by @Chevrolet \r\n\r\nCheck out http://MLB.com/video for more!\r\n\r\nAbout MLB.com: About MLB.com: Baseball Commissioner Allan H....", + is_upcoming: false, + short_description: Some("Mariners vs. Astros full game highlights from 10/11/22, presented by @Chevrolet \r\n\r\nCheck out http://MLB.com/video for more!\r\n\r\nAbout MLB.com: About MLB.com: Baseball Commissioner Allan H...."), ), - SearchVideo( + VideoItem( id: "ICULY_gTngs", title: "The MCU Has Been Taking Us For Granted.", length: Some(1025), @@ -1131,7 +1158,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC5UYMeKfZbFYnLHzoTJB1xA", name: "Schaffrillas Productions", avatar: [ @@ -1141,17 +1168,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 973046, + view_count: Some(973046), is_live: false, is_short: false, - short_description: "Head to http://squarespace.com/schaffrillas to save 10% off your first purchase of a website or domain. Thanks to Squarespace for sponsoring this video!\n\nSchaff and the MCU are drifting apart....", + is_upcoming: false, + short_description: Some("Head to http://squarespace.com/schaffrillas to save 10% off your first purchase of a website or domain. Thanks to Squarespace for sponsoring this video!\n\nSchaff and the MCU are drifting apart...."), ), - SearchVideo( + VideoItem( id: "bunhaERjxmE", title: "Frog Slime 🐸✨ | Ep. 11 | Minecraft Empires S2 1.19", length: Some(608), @@ -1172,7 +1200,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCzTlXb7ivVzuFlugVCv3Kvg", name: "LDShadowLady", avatar: [ @@ -1182,17 +1210,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 649096, + view_count: Some(649096), is_live: false, is_short: false, - short_description: "Please *boop* the like button if you enjoy the video! :)\nEmpires SMP is a 1.19 vanilla Minecraft server with some other fun Minecraft Youtubers! Each player chooses a biome to rule over and...", + is_upcoming: false, + short_description: Some("Please *boop* the like button if you enjoy the video! :)\nEmpires SMP is a 1.19 vanilla Minecraft server with some other fun Minecraft Youtubers! Each player chooses a biome to rule over and..."), ), - SearchVideo( + VideoItem( id: "tDhfNCUqZDs", title: "Bandmanrill x Sha Ek - “Jiggy In Jersey Pt2” (Shot by @RARI DIGITAL)", length: Some(110), @@ -1213,7 +1242,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCQxF0u3RdN0v46EwkQChW7w", name: "RARI DIGITAL", avatar: [ @@ -1223,17 +1252,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 163557, + view_count: Some(163557), is_live: false, is_short: false, - short_description: "Produced by EMRLD\nhttps://instagram.com/emrldbeats?igshid=YmMyMTA2M2Y=\n\nPre-Save “The Club Godfather” now: https://bandmanrill.lnk.to/ClubGodfather\n\nFollow BandmanRill & Sha Ek\nhttps://www.inst...", + is_upcoming: false, + short_description: Some("Produced by EMRLD\nhttps://instagram.com/emrldbeats?igshid=YmMyMTA2M2Y=\n\nPre-Save “The Club Godfather” now: https://bandmanrill.lnk.to/ClubGodfather\n\nFollow BandmanRill & Sha Ek\nhttps://www.inst..."), ), - SearchVideo( + VideoItem( id: "MEZe4chAeZA", title: "Dog and Chainsaw | Chainsawman Ep 1 Reaction", length: Some(1077), @@ -1254,7 +1284,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UChJ73nb9I4Xq1bzc0a-j-pQ", name: "YaBoyRoshi", avatar: [ @@ -1264,17 +1294,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 265018, + view_count: Some(265018), is_live: false, is_short: false, - short_description: "PATREON📺: http://Patreon.com/Yaboyroshi\nCHECK OUT OUR MERCH 👕: http://www.yaboyroshi.com\nGAMING CHANNEL: http://youtube.com/ybrszn\nJOIN THE DISCORD! https://discord.gg/6gAg8Vh\nFOLLOW...", + is_upcoming: false, + short_description: Some("PATREON📺: http://Patreon.com/Yaboyroshi\nCHECK OUT OUR MERCH 👕: http://www.yaboyroshi.com\nGAMING CHANNEL: http://youtube.com/ybrszn\nJOIN THE DISCORD! https://discord.gg/6gAg8Vh\nFOLLOW..."), ), - SearchVideo( + VideoItem( id: "NMA_isZYsYQ", title: "KICK BACK", length: Some(194), @@ -1295,7 +1326,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCUCeZaZeJbEYAAzvMgrKOPQ", name: "Kenshi Yonezu 米津玄師", avatar: [ @@ -1305,17 +1336,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 934820, + view_count: Some(934820), is_live: false, is_short: false, - short_description: "Provided to YouTube by Sony Music Labels Inc.\n\nKICK BACK · Kenshi Yonezu\n\nKICK BACK\n\n℗ 2022 Sony Music Labels Inc.\n\nReleased on: 2022-10-12\n\nArranger: Daiki Tsuneta\nComposer, Lyricist: Tsunku...", + is_upcoming: false, + short_description: Some("Provided to YouTube by Sony Music Labels Inc.\n\nKICK BACK · Kenshi Yonezu\n\nKICK BACK\n\n℗ 2022 Sony Music Labels Inc.\n\nReleased on: 2022-10-12\n\nArranger: Daiki Tsuneta\nComposer, Lyricist: Tsunku..."), ), - SearchVideo( + VideoItem( id: "qe6Oy8oEOhI", title: "Top 50 Amazon Prime Day October 2022 Deals (DAY 2!) 🔥 Better Deals Than Yesterday?!", length: Some(752), @@ -1336,7 +1368,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC5Qbo0AR3CwpmEq751BIy0g", name: "The Deal Guy", avatar: [ @@ -1346,17 +1378,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 390286, + view_count: Some(390286), is_live: false, is_short: false, - short_description: "It’s Day 2 of October Amazon Prime Day Early Access 2022!! Here are the best deals on Laptops, TV’s, Smart Home & Apple Deals!\n👇🏼 ALL DEAL LINKS ARE FEATURED IN THE DESCRIPTION BELOW...", + is_upcoming: false, + short_description: Some("It’s Day 2 of October Amazon Prime Day Early Access 2022!! Here are the best deals on Laptops, TV’s, Smart Home & Apple Deals!\n👇🏼 ALL DEAL LINKS ARE FEATURED IN THE DESCRIPTION BELOW..."), ), - SearchVideo( + VideoItem( id: "odWKEfp2QMY", title: "Måneskin - THE LONELIEST (Official Video)", length: Some(288), @@ -1377,7 +1410,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCgQna2EqpzqzfBjlSmzT72w", name: "Måneskin Official", avatar: [ @@ -1387,17 +1420,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 1273458, + view_count: Some(1273458), is_live: false, is_short: false, - short_description: "“THE LONELIEST” – New single by Måneskin \nListen & Download THE LONELIEST: https://maneskinofficial.lnk.to/THELONELIEST\n\nFollow Måneskin:\nInstagram - https://www.instagram.com/maneskinoffic...", + is_upcoming: false, + short_description: Some("“THE LONELIEST” – New single by Måneskin \nListen & Download THE LONELIEST: https://maneskinofficial.lnk.to/THELONELIEST\n\nFollow Måneskin:\nInstagram - https://www.instagram.com/maneskinoffic..."), ), - SearchVideo( + VideoItem( id: "BRb4U99OU80", title: "M3GAN - official trailer", length: Some(148), @@ -1418,7 +1452,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCq0OueAsdxH6b8nyAspwViw", name: "Universal Pictures", avatar: [ @@ -1428,17 +1462,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 4502416, + view_count: Some(4502416), is_live: false, is_short: false, - short_description: "meet M3GAN. your new best friend.\n\nM3GAN - official trailer\nonly in theaters january 13\n\nFrom the most prolific minds in horror—James Wan, the filmmaker behind the Saw, Insidious and The...", + is_upcoming: false, + short_description: Some("meet M3GAN. your new best friend.\n\nM3GAN - official trailer\nonly in theaters january 13\n\nFrom the most prolific minds in horror—James Wan, the filmmaker behind the Saw, Insidious and The..."), ), - SearchVideo( + VideoItem( id: "F-7rQBY8uIQ", title: "Lil Baby - Heyy (Official Video)", length: Some(193), @@ -1459,7 +1494,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVS88tG_NYgxF6Udnx2815Q", name: "Lil Baby Official 4PF", avatar: [ @@ -1469,17 +1504,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 days ago"), - view_count: 2540238, + view_count: Some(2540238), is_live: false, is_short: false, - short_description: "Music video by Lil Baby performing Heyy. Quality Control Music/Motown Records; © 2022 Quality Control Music, LLC, under exclusive license to UMG Recordings, Inc.\n\nhttp://vevo.ly/IFLIVM", + is_upcoming: false, + short_description: Some("Music video by Lil Baby performing Heyy. Quality Control Music/Motown Records; © 2022 Quality Control Music, LLC, under exclusive license to UMG Recordings, Inc.\n\nhttp://vevo.ly/IFLIVM"), ), - SearchVideo( + VideoItem( id: "3sPxvgrKwEg", title: "Overwatch 2 - SEASON 1 HERO TIER LIST", length: Some(1183), @@ -1500,7 +1536,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCQH4V9PiY_eLo4Ihr1tWCwQ", name: "KarQ", avatar: [ @@ -1510,17 +1546,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 655275, + view_count: Some(655275), is_live: false, is_short: false, - short_description: "🤖 Install Mech Arena for FREE here on Mobile and PC ✅ https://clik.cc/87hRz and get a special starter pack to help kickstart your game! ⭐\n\nThis Hero Tier list is based on my competitive...", + is_upcoming: false, + short_description: Some("🤖 Install Mech Arena for FREE here on Mobile and PC ✅ https://clik.cc/87hRz and get a special starter pack to help kickstart your game! ⭐\n\nThis Hero Tier list is based on my competitive..."), ), - SearchVideo( + VideoItem( id: "_akEYecFdyM", title: "Overwatch 2 is free but I still feel scammed", length: Some(904), @@ -1541,7 +1578,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCd9TUql8V7J-Xy1RNgA7MlQ", name: "zanny", avatar: [ @@ -1551,17 +1588,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 1122910, + view_count: Some(1122910), is_live: false, is_short: false, - short_description: "Ashe main\n\n\n►zan clan meme merch\nhttps://crowdmade.com/collections/zanny\n►Kirin & Miro shirts and hoodies\nhttps://projectorochi.com/collections/originals\n\n►My things\nTwitch: https://www.twitc...", + is_upcoming: false, + short_description: Some("Ashe main\n\n\n►zan clan meme merch\nhttps://crowdmade.com/collections/zanny\n►Kirin & Miro shirts and hoodies\nhttps://projectorochi.com/collections/originals\n\n►My things\nTwitch: https://www.twitc..."), ), - SearchVideo( + VideoItem( id: "6MKcY5wTcpY", title: "LEE CHAE YEON (이채연) - HUSH RUSH MV", length: Some(221), @@ -1582,7 +1620,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_pwIXKXNm5KGhdEVzmY60A", name: "Stone Music Entertainment", avatar: [ @@ -1592,17 +1630,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 1974306, + view_count: Some(1974306), is_live: false, is_short: false, - short_description: "LEE CHAE YEON (이채연) - HUSH RUSH MV\n\nLEE CHAE YEON(이채연) 1st Mini Album \"HUSH RUSH\" has been released.\n\n이채연의 첫 미니 앨범 \'HUSH RUSH\'는 고성에 갇힌 뱀파이어가...", + is_upcoming: false, + short_description: Some("LEE CHAE YEON (이채연) - HUSH RUSH MV\n\nLEE CHAE YEON(이채연) 1st Mini Album \"HUSH RUSH\" has been released.\n\n이채연의 첫 미니 앨범 \'HUSH RUSH\'는 고성에 갇힌 뱀파이어가..."), ), - SearchVideo( + VideoItem( id: "xIeYK9w03i4", title: "『チェンソーマン』第1話スペシャルエンディング / CHAINSAW MAN #1 Ending│Vaundy 「CHAINSAW BLOOD」", length: Some(92), @@ -1623,7 +1662,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCjfAEJZdfbIjVHdo5yODfyQ", name: "MAPPA CHANNEL", avatar: [ @@ -1633,17 +1672,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 2730322, + view_count: Some(2730322), is_live: false, is_short: false, - short_description: "第1話 エンディング・テーマ\nVaundy 「CHAINSAW BLOOD」\n作詞・作曲・編曲 Vaundy\n(SDR / Sony Music Labels Inc.)\n\n楽曲配信リンク:https://lnk.to/CHAINSAW_BLOOD\n\n2022年10...", + is_upcoming: false, + short_description: Some("第1話 エンディング・テーマ\nVaundy 「CHAINSAW BLOOD」\n作詞・作曲・編曲 Vaundy\n(SDR / Sony Music Labels Inc.)\n\n楽曲配信リンク:https://lnk.to/CHAINSAW_BLOOD\n\n2022年10..."), ), - SearchVideo( + VideoItem( id: "s4y_kzpCthQ", title: "Blaqbonez - Back In Uni (Official Music Video)", length: Some(209), @@ -1664,7 +1704,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC0iZ_gqCk22K0jWscf75lhg", name: "Blaqbonez", avatar: [ @@ -1674,17 +1714,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 923909, + view_count: Some(923909), is_live: false, is_short: false, - short_description: "Get \"Back In Uni\" by BLAQBONEZ here: https://Blaqbonez.lnk.to/BackInUniOM\n\n#Blaqbonez #BackInUni #YoungPreacher\n\nFollow Blaqbonez On: \nFacebook: https://bit.ly/2GuhhPj \nTwitter: http://twitter.com...", + is_upcoming: false, + short_description: Some("Get \"Back In Uni\" by BLAQBONEZ here: https://Blaqbonez.lnk.to/BackInUniOM\n\n#Blaqbonez #BackInUni #YoungPreacher\n\nFollow Blaqbonez On: \nFacebook: https://bit.ly/2GuhhPj \nTwitter: http://twitter.com..."), ), - SearchVideo( + VideoItem( id: "_SKVFtLtJws", title: "Charli D\'Amelio and Mark Ballas Jazz (Week 4) | Dancing With The Stars on Disney+", length: Some(92), @@ -1705,7 +1746,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCi3OE-aN09WOcN9d2stCvPg", name: "charli d\'amelio", avatar: [ @@ -1715,17 +1756,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 164574, + view_count: Some(164574), is_live: false, is_short: false, - short_description: "Charli D\'Amelio and Mark Ballas Jazz (Week 4) | Dancing With The Stars on Disney+\nSubscribe: @charli d\'amelio \nWatch next: Charli D\'Amelio and Mark Ballas Rumba (Week 3) | Dancing With The...", + is_upcoming: false, + short_description: Some("Charli D\'Amelio and Mark Ballas Jazz (Week 4) | Dancing With The Stars on Disney+\nSubscribe: @charli d\'amelio \nWatch next: Charli D\'Amelio and Mark Ballas Rumba (Week 3) | Dancing With The..."), ), - SearchVideo( + VideoItem( id: "BtJPMqyhj_M", title: "Money Man - Armed & Dangerous (Official Video)", length: Some(110), @@ -1746,7 +1788,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCSHVQ3lgpeSbETMqKl8kcug", name: "Money Man", avatar: [ @@ -1756,17 +1798,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 337315, + view_count: Some(337315), is_live: false, is_short: false, - short_description: "#MoneyMan #ArmedNDangerous #EMPIRE\n\n\n\nOfficial Video by Money Man - \"Armed & Dangerous\" © 2022 Black Circle / EMPIRE", + is_upcoming: false, + short_description: Some("#MoneyMan #ArmedNDangerous #EMPIRE\n\n\n\nOfficial Video by Money Man - \"Armed & Dangerous\" © 2022 Black Circle / EMPIRE"), ), - SearchVideo( + VideoItem( id: "rge0deYBVv0", title: "Top 50 Amazon Prime Day October 2022 Deals 🤑 (Updated Hourly!!)", length: Some(780), @@ -1787,7 +1830,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC5Qbo0AR3CwpmEq751BIy0g", name: "The Deal Guy", avatar: [ @@ -1797,17 +1840,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 648769, + view_count: Some(648769), is_live: false, is_short: false, - short_description: "It’s October Amazon Prime Day Early Access 2022!! Here are the best deals on Laptops, TV’s, Smart Home & Apple Deals!\n👇🏼 ALL DEAL LINKS ARE FEATURED IN THE DESCRIPTION BELOW 👇🏼...", + is_upcoming: false, + short_description: Some("It’s October Amazon Prime Day Early Access 2022!! Here are the best deals on Laptops, TV’s, Smart Home & Apple Deals!\n👇🏼 ALL DEAL LINKS ARE FEATURED IN THE DESCRIPTION BELOW 👇🏼..."), ), - SearchVideo( + VideoItem( id: "luXUJ9LJcy0", title: "Sounds from the Sideline: Week 5 at LAR | 2022", length: Some(432), @@ -1828,7 +1872,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCC0BPKJxAyxjQoRTYbpW0FQ", name: "Dallas Cowboys", avatar: [ @@ -1838,17 +1882,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 194246, + view_count: Some(194246), is_live: false, is_short: false, - short_description: "Sights and sounds from the sideline of the Dallas Cowboys game vs the Los Angele Rams, at SoFi Stadium.\n\nSubscribe to the Dallas Cowboys YouTube Channel: https://bit.ly/2L07gMO\nFor more Cowboys...", + is_upcoming: false, + short_description: Some("Sights and sounds from the sideline of the Dallas Cowboys game vs the Los Angele Rams, at SoFi Stadium.\n\nSubscribe to the Dallas Cowboys YouTube Channel: https://bit.ly/2L07gMO\nFor more Cowboys..."), ), - SearchVideo( + VideoItem( id: "avUEfUTGbhM", title: "Welding an excavator bucket and digging pond", length: Some(1756), @@ -1869,7 +1914,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCUujfNBK9uv3cIW-P5PX7vA", name: "Andrew Camarata", avatar: [ @@ -1879,17 +1924,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 402574, + view_count: Some(402574), is_live: false, is_short: false, - short_description: "Welding a set of quick change ears on an excavator bucket, then using that bucket to dig a pond and do some tree work.", + is_upcoming: false, + short_description: Some("Welding a set of quick change ears on an excavator bucket, then using that bucket to dig a pond and do some tree work."), ), - SearchVideo( + VideoItem( id: "bqEgXmTU2SI", title: "NEW 5-5-5 ACE PARAGON - The Goliath Doomship! (Bloons TD 6)", length: Some(950), @@ -1910,7 +1956,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC7WQH4kpgxXJYHp8r9IAO-Q", name: "ISAB", avatar: [ @@ -1920,17 +1966,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 335274, + view_count: Some(335274), is_live: false, is_short: false, - short_description: "NEW 5-5-5 ACE PARAGON - The Goliath Doomship! BTD6 / Bloons TD 6 - update 33.0 is out for real, and here is my first look at the new paragon on the new map(s)! The goliath doomship has lots...", + is_upcoming: false, + short_description: Some("NEW 5-5-5 ACE PARAGON - The Goliath Doomship! BTD6 / Bloons TD 6 - update 33.0 is out for real, and here is my first look at the new paragon on the new map(s)! The goliath doomship has lots..."), ), - SearchVideo( + VideoItem( id: "xhYj9JJnLHM", title: "DDG 25th SURPRISE BIRTHDAY PARTY!!", length: Some(3252), @@ -1951,7 +1998,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCDDgfKQE3eaD1H08VHRAfig", name: "PontiacMadeDDG VLOGS", avatar: [ @@ -1961,17 +2008,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 days ago"), - view_count: 678135, + view_count: Some(678135), is_live: false, is_short: false, - short_description: "\"It\'s Not Me It\'s You\" available at: https://DDG.lnk.to/ItsNotMeItsYou\n\nFollow My Social Media:\nInstagram: https://instagram.com/ddg\nTwitter: https://twitter.com/pontiacmadeddg\nSnapChat: https://sn...", + is_upcoming: false, + short_description: Some("\"It\'s Not Me It\'s You\" available at: https://DDG.lnk.to/ItsNotMeItsYou\n\nFollow My Social Media:\nInstagram: https://instagram.com/ddg\nTwitter: https://twitter.com/pontiacmadeddg\nSnapChat: https://sn..."), ), - SearchVideo( + VideoItem( id: "RlbajBvxR0M", title: "Werewolf by Night - The MCU Tries to Be Creative Again", length: Some(366), @@ -1992,7 +2040,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCqTYHSnBUXZamsVcOlQf-fg", name: "The Cosmonaut Variety Hour", avatar: [ @@ -2002,17 +2050,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 255765, + view_count: Some(255765), is_live: false, is_short: false, - short_description: "Patreon: https://www.patreon.com/cosmonautvarietyhour\r\n\r\nBUY A SHIRT: https://teespring.com/stores/cosmonaut-variety-merch-store\r\n\r\nTwitter: https://twitter.com/cosmovarietyhr", + is_upcoming: false, + short_description: Some("Patreon: https://www.patreon.com/cosmonautvarietyhour\r\n\r\nBUY A SHIRT: https://teespring.com/stores/cosmonaut-variety-merch-store\r\n\r\nTwitter: https://twitter.com/cosmovarietyhr"), ), - SearchVideo( + VideoItem( id: "yX_DwPnkycc", title: "THE BEST RESULTS I\'VE SEEN YET! (PROGRESS UPDATE)", length: Some(906), @@ -2033,7 +2082,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC6jgzx2g3nlbaYkd8EMweKA", name: "Jaclyn Hill", avatar: [ @@ -2043,17 +2092,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 259996, + view_count: Some(259996), is_live: false, is_short: false, - short_description: "SUBSCRIBE! \nhttp://goo.gl/3Awmn8\n\nSHOP MY COSMETICS BRAND HERE!\nhttps://jaclyncosmetics.com\n\nSHOP MY JEWELRY BRAND HERE!\nhttps://jaclynroxanne.com\n\nSHOP MY PALETTES & BRUSHES HERE!!\nhttp://morpheb...", + is_upcoming: false, + short_description: Some("SUBSCRIBE! \nhttp://goo.gl/3Awmn8\n\nSHOP MY COSMETICS BRAND HERE!\nhttps://jaclyncosmetics.com\n\nSHOP MY JEWELRY BRAND HERE!\nhttps://jaclynroxanne.com\n\nSHOP MY PALETTES & BRUSHES HERE!!\nhttp://morpheb..."), ), - SearchVideo( + VideoItem( id: "CtpdMkKvB6U", title: "hi, I\'m Dream.", length: Some(342), @@ -2074,7 +2124,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCTkXRDQl0luXxVQrRQvWS6w", name: "Dream", avatar: [ @@ -2084,17 +2134,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("10 days ago"), - view_count: 40299696, + view_count: Some(40299696), is_live: false, is_short: false, - short_description: "hi, I\'m Dream, and this is what I look like.\n\nAfter years of being completely faceless online, I finally decided to do a face reveal.\n\nFollow my socials:\n➽ Twitter - @dream\n➽ Instagram...", + is_upcoming: false, + short_description: Some("hi, I\'m Dream, and this is what I look like.\n\nAfter years of being completely faceless online, I finally decided to do a face reveal.\n\nFollow my socials:\n➽ Twitter - @dream\n➽ Instagram..."), ), - SearchVideo( + VideoItem( id: "t6fIp7mMJ90", title: "what happened.", length: Some(332), @@ -2115,7 +2166,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCpi8TJfiA4lKGkaXs__YdBA", name: "The Try Guys", avatar: [ @@ -2125,17 +2176,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("9 days ago"), - view_count: 10499110, + view_count: Some(10499110), is_live: false, is_short: false, - short_description: "", + is_upcoming: false, + short_description: None, ), - SearchVideo( + VideoItem( id: "dFlDRhvM4L0", title: "『チェンソーマン』ノンクレジットオープニング / CHAINSAW MAN Opening│米津玄師 「KICK BACK」", length: Some(90), @@ -2156,7 +2208,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCjfAEJZdfbIjVHdo5yODfyQ", name: "MAPPA CHANNEL", avatar: [ @@ -2166,17 +2218,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 10285052, + view_count: Some(10285052), is_live: false, is_short: false, - short_description: "オープニング・テーマ\n米津玄師\u{3000}「KICK BACK」 Kenshi Yonezu – KICK BACK\n作詞・作曲\u{3000}米津玄師\n\u{3000}\u{3000}\u{3000}編曲\u{3000}米津玄師\u{3000}常田大希 (King Gnu / millennium...", + is_upcoming: false, + short_description: Some("オープニング・テーマ\n米津玄師\u{3000}「KICK BACK」 Kenshi Yonezu – KICK BACK\n作詞・作曲\u{3000}米津玄師\n\u{3000}\u{3000}\u{3000}編曲\u{3000}米津玄師\u{3000}常田大希 (King Gnu / millennium..."), ), - SearchVideo( + VideoItem( id: "6T67I2w1G2U", title: "Extreme $1,000,000 Minecraft Challenge!", length: Some(643), @@ -2197,7 +2250,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCIPPMRA040LQr5QPyJEbmXA", name: "MrBeast Gaming", avatar: [ @@ -2207,17 +2260,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 2873209, + view_count: Some(2873209), is_live: false, is_short: false, - short_description: "Thank you to Undeniably Dairy for sponsoring this video! Check them out! http://www.bit.ly/UDMrBeast\n\nI challenged six YouTubers to compete for $1,000,000!\n\nSUBSCRIBE OR YOU\'LL HAVE BAD LUCK...", + is_upcoming: false, + short_description: Some("Thank you to Undeniably Dairy for sponsoring this video! Check them out! http://www.bit.ly/UDMrBeast\n\nI challenged six YouTubers to compete for $1,000,000!\n\nSUBSCRIBE OR YOU\'LL HAVE BAD LUCK..."), ), - SearchVideo( + VideoItem( id: "DvkTX-AquQo", title: "Impossible 0.00001% Odds!", length: Some(481), @@ -2238,7 +2292,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCUaT_39o1x6qWjz7K2pWcgw", name: "Beast Reacts", avatar: [ @@ -2248,17 +2302,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 4850190, + view_count: Some(4850190), is_live: false, is_short: false, - short_description: "SUBSCRIBE OR YOU\'LL HAVE BAD LUCK\n\nCHECK OUT THESE CHANNELS OR ELSE\n\nFA 92\nhttps://www.youtube.com/watch?v=oaUH-nAg6UU\n\nRM Media\nhttps://www.youtube.com/watch?v=DFG-vaT0qgk\n\nThe Dodo\nhttps://cdn.jw...", + is_upcoming: false, + short_description: Some("SUBSCRIBE OR YOU\'LL HAVE BAD LUCK\n\nCHECK OUT THESE CHANNELS OR ELSE\n\nFA 92\nhttps://www.youtube.com/watch?v=oaUH-nAg6UU\n\nRM Media\nhttps://www.youtube.com/watch?v=DFG-vaT0qgk\n\nThe Dodo\nhttps://cdn.jw..."), ), - SearchVideo( + VideoItem( id: "F-7rQBY8uIQ", title: "Lil Baby - Heyy (Official Video)", length: Some(193), @@ -2279,7 +2334,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVS88tG_NYgxF6Udnx2815Q", name: "Lil Baby Official 4PF", avatar: [ @@ -2289,17 +2344,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 days ago"), - view_count: 2540238, + view_count: Some(2540238), is_live: false, is_short: false, - short_description: "Music video by Lil Baby performing Heyy. Quality Control Music/Motown Records; © 2022 Quality Control Music, LLC, under exclusive license to UMG Recordings, Inc.\n\nhttp://vevo.ly/IFLIVM", + is_upcoming: false, + short_description: Some("Music video by Lil Baby performing Heyy. Quality Control Music/Motown Records; © 2022 Quality Control Music, LLC, under exclusive license to UMG Recordings, Inc.\n\nhttp://vevo.ly/IFLIVM"), ), - SearchVideo( + VideoItem( id: "atwHMKZ0SLU", title: "Boosie in the trap!", length: Some(9879), @@ -2320,7 +2376,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC4m46pCBkMEyy8gk26WKqbA", name: "The 85 South Comedy Show", avatar: [ @@ -2330,17 +2386,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 days ago"), - view_count: 2019404, + view_count: Some(2019404), is_live: false, is_short: false, - short_description: "Hit Our Website for more info: https://www.85southshow.com/\nGet our custom merchandise: https://85apparelco.com/\nSubscribe To our Channel: bitly.com/85tube \nWATCH KARLOUS\' MILLER\'s COMEDY SPECIAL!...", + is_upcoming: false, + short_description: Some("Hit Our Website for more info: https://www.85southshow.com/\nGet our custom merchandise: https://85apparelco.com/\nSubscribe To our Channel: bitly.com/85tube \nWATCH KARLOUS\' MILLER\'s COMEDY SPECIAL!..."), ), - SearchVideo( + VideoItem( id: "Ut68FBnWbAI", title: "ok, let\'s talk about it. - The TryPod Ep. 181", length: Some(4226), @@ -2361,7 +2418,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCRrigpc864fw8ZNsJ2AnEJA", name: "TryPods", avatar: [ @@ -2371,17 +2428,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 days ago"), - view_count: 5591480, + view_count: Some(5591480), is_live: false, is_short: false, - short_description: "This episode is sponsored by BetterHelp. Take charge of your mental health with 10% off your first month of online therapy at https://betterhelp.com/trypod\nSupport local restaurants from the...", + is_upcoming: false, + short_description: Some("This episode is sponsored by BetterHelp. Take charge of your mental health with 10% off your first month of online therapy at https://betterhelp.com/trypod\nSupport local restaurants from the..."), ), - SearchVideo( + VideoItem( id: "_Z3QKkl1WyM", title: "Marvel Studios’ Black Panther: Wakanda Forever | Official Trailer", length: Some(131), @@ -2402,7 +2460,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCvC4D8onUfXzvjTOM-dBfEA", name: "Marvel Entertainment", avatar: [ @@ -2412,17 +2470,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("10 days ago"), - view_count: 24540193, + view_count: Some(24540193), is_live: false, is_short: false, - short_description: "“Show them who we are.” Watch the brand-new trailer for Marvel Studios’ Black Panther: Wakanda Forever, only in theaters November 11.\nGet tickets now: fandango.com/wakandaforever \n\n►...", + is_upcoming: false, + short_description: Some("“Show them who we are.” Watch the brand-new trailer for Marvel Studios’ Black Panther: Wakanda Forever, only in theaters November 11.\nGet tickets now: fandango.com/wakandaforever \n\n►..."), ), - SearchVideo( + VideoItem( id: "nMPCXuvL8EM", title: "The Super Mario Bros. Movie Direct", length: Some(482), @@ -2443,7 +2502,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCGIY_O-8vW4rfX98KlMkvRg", name: "Nintendo of America", avatar: [ @@ -2453,17 +2512,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("Streamed 7 days ago"), - view_count: 5869928, + view_count: Some(5869928), is_live: false, is_short: false, - short_description: "Watch this Nintendo Direct: The Super Mario Bros. Movie presentation introducing the world premiere trailer for the upcoming film (no game information will be featured).\n\nSubscribe for more...", + is_upcoming: false, + short_description: Some("Watch this Nintendo Direct: The Super Mario Bros. Movie presentation introducing the world premiere trailer for the upcoming film (no game information will be featured).\n\nSubscribe for more..."), ), - SearchVideo( + VideoItem( id: "SS7HXxy3_2c", title: "Try Guys - SNL", length: Some(352), @@ -2484,7 +2544,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCqFzWxSCi39LnW1JKFR3efg", name: "Saturday Night Live", avatar: [ @@ -2494,17 +2554,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 days ago"), - view_count: 2106221, + view_count: Some(2106221), is_live: false, is_short: false, - short_description: "A CNN broadcast is interrupted by breaking news of the Try Guys\' (Mikey Day, Bowen Yang, Andrew Dismukes) response video to Ned Fulmer.\n\nSaturday Night Live. Stream now on Peacock: https://pck.tv/3...", + is_upcoming: false, + short_description: Some("A CNN broadcast is interrupted by breaking news of the Try Guys\' (Mikey Day, Bowen Yang, Andrew Dismukes) response video to Ned Fulmer.\n\nSaturday Night Live. Stream now on Peacock: https://pck.tv/3..."), ), - SearchVideo( + VideoItem( id: "rvInpw0WGLc", title: "Town Hall 15 Is Here! Clash of Clans New Update Available Now!", length: Some(71), @@ -2525,7 +2586,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCD1Em4q90ZUK2R5HKesszJg", name: "Clash of Clans", avatar: [ @@ -2535,17 +2596,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 days ago"), - view_count: 5259742, + view_count: Some(5259742), is_live: false, is_short: false, - short_description: "Town Hall 15 Is Here! Clash of Clans New Update Available Now!\n\n#clashofclans #townhall15 #newupdate #th15\n\n\nIntroducing Town Hall 15, the most magical Town Hall yet!\n\n● Power up your village...", + is_upcoming: false, + short_description: Some("Town Hall 15 Is Here! Clash of Clans New Update Available Now!\n\n#clashofclans #townhall15 #newupdate #th15\n\n\nIntroducing Town Hall 15, the most magical Town Hall yet!\n\n● Power up your village..."), ), - SearchVideo( + VideoItem( id: "etV_nxVU6l8", title: "Wedding Stereotypes", length: Some(676), @@ -2566,7 +2628,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCRijo3ddMTht_IHyNSNXpNQ", name: "Dude Perfect", avatar: [ @@ -2576,17 +2638,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 days ago"), - view_count: 5931342, + view_count: Some(5931342), is_live: false, is_short: false, - short_description: "Love \'em or Hate \'em, we all know \'em! Check out all the Wedding Stereotypes!\n► Thanks for subscribing! - http://bit.ly/SubDudePerfect\n► Sail to the Bahamas w/ us on the DUDE PERFECT CRUISE:...", + is_upcoming: false, + short_description: Some("Love \'em or Hate \'em, we all know \'em! Check out all the Wedding Stereotypes!\n► Thanks for subscribing! - http://bit.ly/SubDudePerfect\n► Sail to the Bahamas w/ us on the DUDE PERFECT CRUISE:..."), ), - SearchVideo( + VideoItem( id: "i7ytY9Onf9o", title: "I Met Dream In Real Life", length: Some(569), @@ -2607,7 +2670,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCA2tt9GSU2sl8rAqjlLR3mQ", name: "GeorgeNotFound", avatar: [ @@ -2617,17 +2680,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("9 days ago"), - view_count: 9843693, + view_count: Some(9843693), is_live: false, is_short: false, - short_description: "I met Dream in real life finally... We\'ve been online friends for what feels like my whole life and this is our first time meeting in peson. This was one of the best weeks of my life.\n\nFollow...", + is_upcoming: false, + short_description: Some("I met Dream in real life finally... We\'ve been online friends for what feels like my whole life and this is our first time meeting in peson. This was one of the best weeks of my life.\n\nFollow..."), ), - SearchVideo( + VideoItem( id: "jYSlpC6Ud2A", title: "Stray Kids \"CASE 143\" M/V", length: Some(221), @@ -2648,7 +2712,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -2658,17 +2722,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 days ago"), - view_count: 34630241, + view_count: Some(34630241), is_live: false, is_short: false, - short_description: "Stray Kids(스트레이 키즈) \"CASE 143\" M/V \n\n💗Listen to <MAXIDENT> now!\n⚡http://Stray-Kids.lnk.to/MAXIDENT \n\nStray Kids \"MAXIDENT\"\niTunes & Apple Music: https://stray-kids.lnk.to/MAXID...", + is_upcoming: false, + short_description: Some("Stray Kids(스트레이 키즈) \"CASE 143\" M/V \n\n💗Listen to <MAXIDENT> now!\n⚡http://Stray-Kids.lnk.to/MAXIDENT \n\nStray Kids \"MAXIDENT\"\niTunes & Apple Music: https://stray-kids.lnk.to/MAXID..."), ), - SearchVideo( + VideoItem( id: "XKRW1zgkCVc", title: "Where Animals\' Scientific Names Come From", length: Some(581), @@ -2689,7 +2754,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC1DTYW241WD64ah5BFWn4JA", name: "Sam O\'Nella Academy", avatar: [ @@ -2699,17 +2764,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("9 days ago"), - view_count: 5579025, + view_count: Some(5579025), is_live: false, is_short: false, - short_description: "sup\n____________________\nCheck out my other channel, Sam O\'Nella Vlog!\nhttps://www.youtube.com/channel/UCvayZDkq6wTj5EQtulrpgZA\n\nFollow me on twitter!\nhttps://twitter.com/Sam_ONella\n\nWant a...", + is_upcoming: false, + short_description: Some("sup\n____________________\nCheck out my other channel, Sam O\'Nella Vlog!\nhttps://www.youtube.com/channel/UCvayZDkq6wTj5EQtulrpgZA\n\nFollow me on twitter!\nhttps://twitter.com/Sam_ONella\n\nWant a..."), ), - SearchVideo( + VideoItem( id: "Th_O5kayAM0", title: "Que Vas A Hacer - Nivel Codiciado X Jose Mejia (Video Oficial)", length: Some(189), @@ -2730,7 +2796,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCZ64C0y5Lc1x11SdQFeDbYg", name: "Nivel Codiciado", avatar: [ @@ -2740,17 +2806,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 days ago"), - view_count: 1322409, + view_count: Some(1322409), is_live: false, is_short: false, - short_description: "Muchas Gracias A Todos Ustedes!\n\nQue Vas A Hacer - Nivel Codiciado X Jose Mejia (Video Oficial)\n\n\nLIKE, COMMENT, SUBSCRIBE!\n\n\nNivel Codiciado IG : https://www.instagram.com/nivelcodiciadooficial/?h...", + is_upcoming: false, + short_description: Some("Muchas Gracias A Todos Ustedes!\n\nQue Vas A Hacer - Nivel Codiciado X Jose Mejia (Video Oficial)\n\n\nLIKE, COMMENT, SUBSCRIBE!\n\n\nNivel Codiciado IG : https://www.instagram.com/nivelcodiciadooficial/?h..."), ), - SearchVideo( + VideoItem( id: "O-mtWoF8umw", title: "Yahritza Y Su Esencia & Ivan Cornejo - Inseparables (Official Video)", length: Some(178), @@ -2771,7 +2838,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC7ptwo_0Npl5Bji31j868fA", name: "Yahritza Y Su Esencia", avatar: [ @@ -2781,17 +2848,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 days ago"), - view_count: 2246200, + view_count: Some(2246200), is_live: false, is_short: false, - short_description: "Official video for “Inseparables” by Yahritza Y Su Esencia & Ivan Cornejo\n\nListen & Download “Inseparables” out now: https://yahritza.lnk.to/Inseparables\nAmazon Music - https://yahritza.lnk...", + is_upcoming: false, + short_description: Some("Official video for “Inseparables” by Yahritza Y Su Esencia & Ivan Cornejo\n\nListen & Download “Inseparables” out now: https://yahritza.lnk.to/Inseparables\nAmazon Music - https://yahritza.lnk..."), ), - SearchVideo( + VideoItem( id: "rFO1iqDpMZU", title: "I Collected Every Illegal Item In Minecraft Hardcore", length: Some(1402), @@ -2812,7 +2880,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_GDu2QH3kp6vJlgEYyqjUA", name: "Kolanii", avatar: [ @@ -2822,17 +2890,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 days ago"), - view_count: 3926322, + view_count: Some(3926322), is_live: false, is_short: false, - short_description: "In this video we go back in time through Minecrafts versions to collect the most illegal items in the game in 100% hardcore! If you enjoyed this video remember to leave a like, it helps ya...", + is_upcoming: false, + short_description: Some("In this video we go back in time through Minecrafts versions to collect the most illegal items in the game in 100% hardcore! If you enjoyed this video remember to leave a like, it helps ya..."), ), - SearchVideo( + VideoItem( id: "-1vsm5bhoyE", title: "Grupo Frontera - No Se Va (Letra Oficial)", length: Some(192), @@ -2853,7 +2922,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCKsN6xyJ2w8g7p4p9apXkYQ", name: "Grupo Frontera", avatar: [ @@ -2863,17 +2932,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 days ago"), - view_count: 6793645, + view_count: Some(6793645), is_live: false, is_short: false, - short_description: "Escucha \"No Se Va\" en tu plataforma favorita: https://bfan.link/no-se-va\nDescubre más de Grupo Frontera aquí: https://bit.ly/GrupoFrontera\nSuscríbete a nuestro canal: https://bit.ly/GrupoFronter...", + is_upcoming: false, + short_description: Some("Escucha \"No Se Va\" en tu plataforma favorita: https://bfan.link/no-se-va\nDescubre más de Grupo Frontera aquí: https://bit.ly/GrupoFrontera\nSuscríbete a nuestro canal: https://bit.ly/GrupoFronter..."), ), - SearchVideo( + VideoItem( id: "XQUiabixHzo", title: "I Speedran the $0.01 Challenge", length: Some(933), @@ -2894,7 +2964,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCnmGIkw-KdI0W5siakKPKog", name: "Ryan Trahan", avatar: [ @@ -2904,17 +2974,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 days ago"), - view_count: 5401331, + view_count: Some(5401331), is_live: false, is_short: false, - short_description: "60 minutes. 1 penny. 0 social skills\nGet Honey for FREE today ▸ https://joinhoney.com/ryan\nHoney finds coupons with one click. Thanks to Honey for sponsoring!", + is_upcoming: false, + short_description: Some("60 minutes. 1 penny. 0 social skills\nGet Honey for FREE today ▸ https://joinhoney.com/ryan\nHoney finds coupons with one click. Thanks to Honey for sponsoring!"), ), - SearchVideo( + VideoItem( id: "8TzH0ayIcdo", title: "The Darkest Story I\'ve Ever Read", length: Some(4383), @@ -2935,7 +3006,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC3cpN6gcJQqcCM6mxRUo_dA", name: "Wendigoon", avatar: [ @@ -2945,17 +3016,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 777753, + view_count: Some(777753), is_live: false, is_short: false, - short_description: "Get Honey for FREE today ▸ https://joinhoney.com/wendigoon\nHoney finds coupons with one click. Thanks to Honey for sponsoring!\n\nMy Links\n\nSecond channel/ Wendigang: https://www.youtube.com/channe...", + is_upcoming: false, + short_description: Some("Get Honey for FREE today ▸ https://joinhoney.com/wendigoon\nHoney finds coupons with one click. Thanks to Honey for sponsoring!\n\nMy Links\n\nSecond channel/ Wendigang: https://www.youtube.com/channe..."), ), - SearchVideo( + VideoItem( id: "xkwc5TZmdIs", title: "GloRilla Glows Up In Every Way With Performance Of \"Tomorrow!\" & \"F.N.F.\" | Hip Hop Awards \'22", length: Some(146), @@ -2976,7 +3048,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCcVqCJ_9owb1zM43vqswMNQ", name: "BETNetworks", avatar: [ @@ -2986,17 +3058,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 days ago"), - view_count: 3400062, + view_count: Some(3400062), is_live: false, is_short: false, - short_description: "Watch GloRilla\'s performance of \"F.N.F.\" & \"Tomorrow\" from the 2022 Hip Hop Awards. #HipHopAwards22 #HipHopAwards #GloRilla #BET @theofficialGloRilla @GloRillaVEVO \n\nSUBSCRIBE to #BET! ►►...", + is_upcoming: false, + short_description: Some("Watch GloRilla\'s performance of \"F.N.F.\" & \"Tomorrow\" from the 2022 Hip Hop Awards. #HipHopAwards22 #HipHopAwards #GloRilla #BET @theofficialGloRilla @GloRillaVEVO \n\nSUBSCRIBE to #BET! ►►..."), ), - SearchVideo( + VideoItem( id: "eJPLiT1kCSM", title: "Museums: Last Week Tonight with John Oliver (HBO)", length: Some(2049), @@ -3017,7 +3090,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC3XTzVzaHQEd30rQbuvCtTQ", name: "LastWeekTonight", avatar: [ @@ -3027,17 +3100,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("10 days ago"), - view_count: 4315677, + view_count: Some(4315677), is_live: false, is_short: false, - short_description: "John Oliver discusses some of the world’s most prestigious museums, why they contain so many stolen goods, the market that continues to illegally trade antiquities, and a pretty solid blueprint...", + is_upcoming: false, + short_description: Some("John Oliver discusses some of the world’s most prestigious museums, why they contain so many stolen goods, the market that continues to illegally trade antiquities, and a pretty solid blueprint..."), ), - SearchVideo( + VideoItem( id: "zwa7NzNBQig", title: "GloRilla, Cardi B - Tomorrow 2 (Official Music Video)", length: Some(214), @@ -3058,7 +3132,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC9bZ9eWvF0eXVqrxK9ve7Nw", name: "theofficialGloRilla", avatar: [ @@ -3068,17 +3142,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 20551404, + view_count: Some(20551404), is_live: false, is_short: false, - short_description: "Stream #Tomorrow2\' here: https://GloRilla.lnk.to/Tomorrow2\nPre-save Glorilla’s debut EP out everywhere 11/11: https://GloRilla.lnk.to/ALG\n\nFollow #GloRilla:\nInstagram: https://www.instagram.com/g...", + is_upcoming: false, + short_description: Some("Stream #Tomorrow2\' here: https://GloRilla.lnk.to/Tomorrow2\nPre-save Glorilla’s debut EP out everywhere 11/11: https://GloRilla.lnk.to/ALG\n\nFollow #GloRilla:\nInstagram: https://www.instagram.com/g..."), ), - SearchVideo( + VideoItem( id: "BHFcF0zcCgA", title: "Hurricane Ian Destroyed My Hometown!", length: Some(647), @@ -3099,7 +3174,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC94lW_-Hr_uA7RcJ3D-WPOg", name: "Danny Duncan", avatar: [ @@ -3109,17 +3184,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 days ago"), - view_count: 3545884, + view_count: Some(3545884), is_live: false, is_short: false, - short_description: "On September 28, Hurricane Ian hit Englewood, Florida, causing heavy flooding, ripping roofs off residents\' houses and leveling buildings, forcing thousands to evacuate.\n\nMerchandise ▶ http://dan...", + is_upcoming: false, + short_description: Some("On September 28, Hurricane Ian hit Englewood, Florida, causing heavy flooding, ripping roofs off residents\' houses and leveling buildings, forcing thousands to evacuate.\n\nMerchandise ▶ http://dan..."), ), - SearchVideo( + VideoItem( id: "xhYj9JJnLHM", title: "DDG 25th SURPRISE BIRTHDAY PARTY!!", length: Some(3252), @@ -3140,7 +3216,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCDDgfKQE3eaD1H08VHRAfig", name: "PontiacMadeDDG VLOGS", avatar: [ @@ -3150,17 +3226,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 days ago"), - view_count: 678135, + view_count: Some(678135), is_live: false, is_short: false, - short_description: "\"It\'s Not Me It\'s You\" available at: https://DDG.lnk.to/ItsNotMeItsYou\n\nFollow My Social Media:\nInstagram: https://instagram.com/ddg\nTwitter: https://twitter.com/pontiacmadeddg\nSnapChat: https://sn...", + is_upcoming: false, + short_description: Some("\"It\'s Not Me It\'s You\" available at: https://DDG.lnk.to/ItsNotMeItsYou\n\nFollow My Social Media:\nInstagram: https://instagram.com/ddg\nTwitter: https://twitter.com/pontiacmadeddg\nSnapChat: https://sn..."), ), - SearchVideo( + VideoItem( id: "9YsEQaW0f2c", title: "Eddie Robinson Jr. goes off on Deion Sanders and Coach Prime responds", length: Some(439), @@ -3181,7 +3258,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCoMv284iYWxL3JSY-9agY2w", name: "HBCUGameday", avatar: [ @@ -3191,17 +3268,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 days ago"), - view_count: 1504982, + view_count: Some(1504982), is_live: false, is_short: false, - short_description: "It was a highly tense and awkward postgame handshake between Alabama State head coach Eddie Robinson Jr. and Jackson State coach Deion Sanders. And that was just the beginning.", + is_upcoming: false, + short_description: Some("It was a highly tense and awkward postgame handshake between Alabama State head coach Eddie Robinson Jr. and Jackson State coach Deion Sanders. And that was just the beginning."), ), - SearchVideo( + VideoItem( id: "m-SB3cpzLUU", title: "i\'m sorry.", length: Some(322), @@ -3222,7 +3300,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCGD1IitV7_EXXEcLUc0D9sQ", name: "Dominic Brack", avatar: [ @@ -3232,17 +3310,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 days ago"), - view_count: 1468515, + view_count: Some(1468515), is_live: false, is_short: false, - short_description: "I wanted to share my side of the story...\nJust an explanation/apology I’m sorry for anyone this effected. \nim going to take a break from social media for a bit but I will be back soon!", + is_upcoming: false, + short_description: Some("I wanted to share my side of the story...\nJust an explanation/apology I’m sorry for anyone this effected. \nim going to take a break from social media for a bit but I will be back soon!"), ), - SearchVideo( + VideoItem( id: "TRGHIN2PGIA", title: "Christian Bale Breaks Down His Most Iconic Characters | GQ", length: Some(1381), @@ -3263,7 +3342,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCsEukrAd64fqA7FjwkmZ_Dw", name: "GQ", avatar: [ @@ -3273,17 +3352,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 days ago"), - view_count: 7814218, + view_count: Some(7814218), is_live: false, is_short: false, - short_description: "Christian Bale breaks down a few of his most iconic characters from \'American Psycho,\' \'The Dark Knight\' Trilogy, \'The Fighter,\' \'The Machinist,\' \'The Big Short,\' \'Vice,\' \'Empire of the Sun,\'...", + is_upcoming: false, + short_description: Some("Christian Bale breaks down a few of his most iconic characters from \'American Psycho,\' \'The Dark Knight\' Trilogy, \'The Fighter,\' \'The Machinist,\' \'The Big Short,\' \'Vice,\' \'Empire of the Sun,\'..."), ), - SearchVideo( + VideoItem( id: "U9HAaHc3wnc", title: "Guess Iono’s Partner Pokémon! 🤔 | Pokémon Scarlet and Pokémon Violet", length: Some(211), @@ -3304,7 +3384,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCFctpiB_Hnlk3ejWfHqSm6Q", name: "The Official Pokémon YouTube channel", avatar: [ @@ -3314,17 +3394,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 1157471, + view_count: Some(1157471), is_live: false, is_short: false, - short_description: "Meet Iono, an influencer, streamer, and Gym Leader who specializes in Electric-type Pokémon ⚡\u{fe0f}\n\nCan you guess Iono’s partner Pokémon? 🤔\n\nPre-order Pokémon Scarlet & Pokémon Violet...", + is_upcoming: false, + short_description: Some("Meet Iono, an influencer, streamer, and Gym Leader who specializes in Electric-type Pokémon ⚡\u{fe0f}\n\nCan you guess Iono’s partner Pokémon? 🤔\n\nPre-order Pokémon Scarlet & Pokémon Violet..."), ), - SearchVideo( + VideoItem( id: "4ywb2pXRYZI", title: "Quavo & Takeoff - To The Bone feat. YoungBoy Never Broke Again (Official visualizer)", length: Some(284), @@ -3345,7 +3426,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCU_xT0uVi5cku7cg9hDgkMA", name: "Quavo Huncho", avatar: [ @@ -3355,17 +3436,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 days ago"), - view_count: 1355588, + view_count: Some(1355588), is_live: false, is_short: false, - short_description: "#NowPlaying Quavo & Takeoff \"To The Bone\" Official Visualizer.\n\nStream & Download \"To The Bone\" on \'Only Built for Infinity Links\' Here: http://www.QualityControl.lnk.to/InfinityLinks\n \nShot...", + is_upcoming: false, + short_description: Some("#NowPlaying Quavo & Takeoff \"To The Bone\" Official Visualizer.\n\nStream & Download \"To The Bone\" on \'Only Built for Infinity Links\' Here: http://www.QualityControl.lnk.to/InfinityLinks\n \nShot..."), ), - SearchVideo( + VideoItem( id: "wP9zsx04fWY", title: "WE ARE COMING! to a city near you!", length: Some(59), @@ -3386,7 +3468,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCdvlHk5SZWwr9HjUcwtu8ng", name: "blink-182", avatar: [ @@ -3396,17 +3478,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 966225, + view_count: Some(966225), is_live: false, is_short: false, - short_description: "We’re coming. Tour’s coming. Album’s coming. Tom’s coming. \nTickets for the world tour go on sale starting Monday, 10/17 at 10am local\nNew Single EDGING out on 10/14\nEverything coming...", + is_upcoming: false, + short_description: Some("We’re coming. Tour’s coming. Album’s coming. Tom’s coming. \nTickets for the world tour go on sale starting Monday, 10/17 at 10am local\nNew Single EDGING out on 10/14\nEverything coming..."), ), - SearchVideo( + VideoItem( id: "9acxn7qAST4", title: "Overwatch 2 Animated Short | “Kiriko”", length: Some(587), @@ -3427,7 +3510,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UClOf1XXinvZsy4wKPAkro2A", name: "PlayOverwatch", avatar: [ @@ -3437,17 +3520,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 days ago"), - view_count: 5352181, + view_count: Some(5352181), is_live: false, is_short: false, - short_description: "The protector of Kanezaka strikes again. Discover the two sides of Kiriko, the loving daughter and the deadly protector.\n\nPlay #Overwatch2 for free today on Windows® PC and Xbox Series X|S,...", + is_upcoming: false, + short_description: Some("The protector of Kanezaka strikes again. Discover the two sides of Kiriko, the loving daughter and the deadly protector.\n\nPlay #Overwatch2 for free today on Windows® PC and Xbox Series X|S,..."), ), - SearchVideo( + VideoItem( id: "8-tQKwB3RKw", title: "Big Boogie - Backend (Remix) Shot by @Camera Gawd", length: Some(164), @@ -3468,7 +3552,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVlaJdpaJiT3Tpr8JZI-DnA", name: "BIG BOOGIE MUSIC", avatar: [ @@ -3478,17 +3562,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 days ago"), - view_count: 778550, + view_count: Some(778550), is_live: false, is_short: false, - short_description: "Big Boogie - Backend (Remix) \n\nFind Big Boogie on His Social Media Below\n\nInstagram | https://www.instagram.com/big_boogie_music\nFacebook | https://www.facebook.com/https://www.facebook.com/profile...", + is_upcoming: false, + short_description: Some("Big Boogie - Backend (Remix) \n\nFind Big Boogie on His Social Media Below\n\nInstagram | https://www.instagram.com/big_boogie_music\nFacebook | https://www.facebook.com/https://www.facebook.com/profile..."), ), - SearchVideo( + VideoItem( id: "5HNy7b6bz4g", title: "I Tried Out for an NBA Team and This Happened…", length: Some(805), @@ -3509,7 +3594,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCQIUhhcmXsu6cN6n3y9-Pww", name: "Jesser", avatar: [ @@ -3519,17 +3604,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 days ago"), - view_count: 4354695, + view_count: Some(4354695), is_live: false, is_short: false, - short_description: "I tried out for the NBA G League... and this is how it went! \n\nDownload the brand NEW NBA app and check it out the behind the scenes as I follow my dreams to make it to the league (https://app.link...", + is_upcoming: false, + short_description: Some("I tried out for the NBA G League... and this is how it went! \n\nDownload the brand NEW NBA app and check it out the behind the scenes as I follow my dreams to make it to the league (https://app.link..."), ), - SearchVideo( + VideoItem( id: "Uq9gPaIzbe8", title: "Sam Smith, Kim Petras - Unholy", length: Some(276), @@ -3550,7 +3636,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCvpDeGlR5wLP9Z3Tb6K0Xfg", name: "SAM SMITH", avatar: [ @@ -3560,17 +3646,18 @@ expression: map_res.c height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("13 days ago"), - view_count: 15055156, + view_count: Some(15055156), is_live: false, is_short: false, - short_description: "Sam Smith \'Unholy\' featuring Kim Petras out now: http://samsmith.world/UnholyID\n\nDirected by Floria Sigismondi\n\nLabel: Capitol Records\nCommissioner: James Hackett\n\nProduction Company: Scheme...", + is_upcoming: false, + short_description: Some("Sam Smith \'Unholy\' featuring Kim Petras out now: http://samsmith.world/UnholyID\n\nDirected by Floria Sigismondi\n\nLabel: Capitol Records\nCommissioner: James Hackett\n\nProduction Company: Scheme..."), ), - SearchVideo( + VideoItem( id: "78sCR9mwBV4", title: "How Draymond Green Was after hitting Jordan Poole in practice", length: Some(76), @@ -3591,7 +3678,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC4G10tk3AHFuyMIuD3rHOBA", name: "RDCworld1", avatar: [ @@ -3601,17 +3688,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 days ago"), - view_count: 2892907, + view_count: Some(2892907), is_live: false, is_short: false, - short_description: "Man why did Draymond Green hit Jordan Poole that hard 😂😂😂 that man out of control I wonder what happened\n\n\nFOLLOW @SUPREMEDREAMS_1 AND @RDCWORLD1 FOR MORE CONTENT/UPDATES \n\n~RDC Social...", + is_upcoming: false, + short_description: Some("Man why did Draymond Green hit Jordan Poole that hard 😂😂😂 that man out of control I wonder what happened\n\n\nFOLLOW @SUPREMEDREAMS_1 AND @RDCWORLD1 FOR MORE CONTENT/UPDATES \n\n~RDC Social..."), ), - SearchVideo( + VideoItem( id: "2U9kNnHvE8o", title: "LAKERS at WARRIORS | NBA PRESEASON FULL GAME HIGHLIGHTS | October 9, 2022", length: Some(585), @@ -3632,7 +3720,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCWJ2lWNubArHWmf3FIHbfcQ", name: "NBA", avatar: [ @@ -3642,17 +3730,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 days ago"), - view_count: 3353247, + view_count: Some(3353247), is_live: false, is_short: false, - short_description: "Never miss a moment with the latest news, trending stories and highlights to bring you closer to your favorite players and teams.\n\nDownload now: https://app.link.nba.com/APP22\n\nThe Los Angeles...", + is_upcoming: false, + short_description: Some("Never miss a moment with the latest news, trending stories and highlights to bring you closer to your favorite players and teams.\n\nDownload now: https://app.link.nba.com/APP22\n\nThe Los Angeles..."), ), - SearchVideo( + VideoItem( id: "xXGFb19rLtE", title: "Bray Wyatt returns to WWE: WWE Extreme Rules 2022 (WWE Network Exclusive)", length: Some(106), @@ -3673,7 +3762,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCJ5v_MCY6GNUBTO8-D3XoAg", name: "WWE", avatar: [ @@ -3683,17 +3772,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 days ago"), - view_count: 2745645, + view_count: Some(2745645), is_live: false, is_short: false, - short_description: "After weeks of mysterious vignettes, Bray Wyatt returns in jaw-dropping fashion at the end of WWE Extreme Rules 2022. Catch WWE action on Peacock, WWE Network, FOX, USA Network, Sony India...", + is_upcoming: false, + short_description: Some("After weeks of mysterious vignettes, Bray Wyatt returns in jaw-dropping fashion at the end of WWE Extreme Rules 2022. Catch WWE action on Peacock, WWE Network, FOX, USA Network, Sony India..."), ), - SearchVideo( + VideoItem( id: "7IGD5URBGZ8", title: "We Got Engaged", length: Some(1325), @@ -3714,7 +3804,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCkDG7yPqJBi_V2qGPRZHI_w", name: "Jayco & Val", avatar: [ @@ -3724,17 +3814,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 254375, + view_count: Some(254375), is_live: false, is_short: false, - short_description: "Valentina @Basic Valentina \n\nInstagram: https://www.instagram.com/basicvalent...\nTikTok: https://vm.tiktok.com/ZM8Gsmm4B/\nYouTube: https://youtube.com/channel/UCQxnOdDS...\n\nJayco @Jaycoset...", + is_upcoming: false, + short_description: Some("Valentina @Basic Valentina \n\nInstagram: https://www.instagram.com/basicvalent...\nTikTok: https://vm.tiktok.com/ZM8Gsmm4B/\nYouTube: https://youtube.com/channel/UCQxnOdDS...\n\nJayco @Jaycoset..."), ), - SearchVideo( + VideoItem( id: "5sRVxb2wkGM", title: "We Bought Every Weird Ad We Saw", length: Some(1602), @@ -3755,7 +3846,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCfbnTUxUech4P1XgYUwYuKA", name: "Cold Ones", avatar: [ @@ -3765,17 +3856,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 1170050, + view_count: Some(1170050), is_live: false, is_short: false, - short_description: "We See It? We Buy It! NO EXCEPTIONS\n💃 GET OUR NEW LIMITED WAIFU CUPS 👉🏻 https://bit.ly/coldoneswaifu\n🌈 Get 10% OFF OUR CLOTHES with code \"COLDONES\" 👉🏻 https://bit.ly/coolshirtzz...", + is_upcoming: false, + short_description: Some("We See It? We Buy It! NO EXCEPTIONS\n💃 GET OUR NEW LIMITED WAIFU CUPS 👉🏻 https://bit.ly/coldoneswaifu\n🌈 Get 10% OFF OUR CLOTHES with code \"COLDONES\" 👉🏻 https://bit.ly/coolshirtzz..."), ), - SearchVideo( + VideoItem( id: "4YEEDqke-D0", title: "Jump into a Paldean Journey | Pokémon Scarlet and Pokémon Violet", length: Some(847), @@ -3796,7 +3888,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCFctpiB_Hnlk3ejWfHqSm6Q", name: "The Official Pokémon YouTube channel", avatar: [ @@ -3806,17 +3898,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 days ago"), - view_count: 2287355, + view_count: Some(2287355), is_live: false, is_short: false, - short_description: "Every big journey begins with a single step! 🌄 Take a peek at some of the adventure you\'ll find through the open world of Paldea!\n\nWhere will you go? What will you discover? Find your treasure...", + is_upcoming: false, + short_description: Some("Every big journey begins with a single step! 🌄 Take a peek at some of the adventure you\'ll find through the open world of Paldea!\n\nWhere will you go? What will you discover? Find your treasure..."), ), - SearchVideo( + VideoItem( id: "rYjmxcV1se4", title: "Film Theory: Dora is CURSED! (Dora The Explorer)", length: Some(1085), @@ -3837,7 +3930,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC3sznuotAs2ohg_U__Jzj_Q", name: "The Film Theorists", avatar: [ @@ -3847,17 +3940,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 days ago"), - view_count: 2404696, + view_count: Some(2404696), is_live: false, is_short: false, - short_description: "Special thanks to Raycon for sponsoring this episode!\nGet 15% off your order! ► https://buyraycon.com/filmtheory\n \nIt\'s time, Theorists. Time to talk about Dora the Explorer. I\'ve wanted...", + is_upcoming: false, + short_description: Some("Special thanks to Raycon for sponsoring this episode!\nGet 15% off your order! ► https://buyraycon.com/filmtheory\n \nIt\'s time, Theorists. Time to talk about Dora the Explorer. I\'ve wanted..."), ), - SearchVideo( + VideoItem( id: "y8qhSduN6sk", title: "PC Games on Console - Scott The Woz", length: Some(1912), @@ -3878,7 +3972,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC4rqhyiTs7XyuODcECvuiiQ", name: "Scott The Woz", avatar: [ @@ -3888,17 +3982,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("20 hours ago"), - view_count: 528686, + view_count: Some(528686), is_live: false, is_short: false, - short_description: "Scott plays The Sims 2 Pets without a caps lock key.\n\nTwitter: https://www.twitter.com/ScottTheWoz\r\nFacebook: https://www.facebook.com/ScottTheWoz/\r\nInstagram: https://www.instagram.com/scottthewoz...", + is_upcoming: false, + short_description: Some("Scott plays The Sims 2 Pets without a caps lock key.\n\nTwitter: https://www.twitter.com/ScottTheWoz\r\nFacebook: https://www.facebook.com/ScottTheWoz/\r\nInstagram: https://www.instagram.com/scottthewoz..."), ), - SearchVideo( + VideoItem( id: "yTLzGSJJ5ts", title: "I Spent 50 Hours Customizing The World\'s Largest Xbox!", length: Some(886), @@ -3919,7 +4014,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UClQubH2NeMmGLTLgNdLBwXg", name: "ZHC", avatar: [ @@ -3929,17 +4024,18 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 days ago"), - view_count: 2638910, + view_count: Some(2638910), is_live: false, is_short: false, - short_description: "50 hours to customize the world\'s largest Xbox Series X!\n\nHuge shoutout to The Casual Engineer for building the world\'s largest xbox! Watch the behind the scenes video here!\nhttps://www.youtube.com...", + is_upcoming: false, + short_description: Some("50 hours to customize the world\'s largest Xbox Series X!\n\nHuge shoutout to The Casual Engineer for building the world\'s largest xbox! Watch the behind the scenes video here!\nhttps://www.youtube.com..."), ), - SearchVideo( + VideoItem( id: "x1u8-i2pWg0", title: "Witness Hurricane Ian As It Hits My Home In Cape Coral, FL And View The Aftermath", length: Some(855), @@ -3960,7 +4056,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCtY0HB5bLpuWOpZofTxkkxg", name: "Ruby (aka Adventure Mom)", avatar: [ @@ -3970,17 +4066,18 @@ expression: map_res.c height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 days ago"), - view_count: 1687151, + view_count: Some(1687151), is_live: false, is_short: false, - short_description: "In this video, I show you videos of what I experienced as Hurricane Ian hit my home in Cape Coral, FL. I then travel down the streets of Cape Coral including the Yacht Club, Cape Harbor, and...", + is_upcoming: false, + short_description: Some("In this video, I show you videos of what I experienced as Hurricane Ian hit my home in Cape Coral, FL. I then travel down the streets of Cape Coral including the Yacht Club, Cape Harbor, and..."), ), - SearchVideo( + VideoItem( id: "FfWtIaDtfYk", title: "Let’s Travel to The Most Extreme Place in The Universe", length: Some(766), @@ -4001,7 +4098,7 @@ expression: map_res.c height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCsXVk37bltHxD1rDPwtNM8Q", name: "Kurzgesagt – In a Nutshell", avatar: [ @@ -4011,14 +4108,15 @@ expression: map_res.c height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("9 days ago"), - view_count: 5546987, + view_count: Some(5546987), is_live: false, is_short: false, - short_description: "The new 12,023 Human Era Calendar is here!\nhttps://kgs.link/calendar\nWORLDWIDE SHIPPING AVAILABLE.\nThis time you can join us on a journey through the microcosm. Curious? Head over to our shop...", + is_upcoming: false, + short_description: Some("The new 12,023 Human Era Calendar is here!\nhttps://kgs.link/calendar\nWORLDWIDE SHIPPING AVAILABLE.\nThis time you can join us on a journey through the microcosm. Curious? Head over to our shop..."), ), ] diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_latest.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_latest.snap index 7da2bd1..7fa7dd7 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_latest.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_latest.snap @@ -34,7 +34,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -45,6 +45,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -75,7 +76,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -86,6 +87,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -117,7 +119,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -128,6 +130,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -162,7 +165,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -173,6 +176,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -203,7 +207,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -214,6 +218,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -244,7 +249,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -255,6 +260,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -285,7 +291,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -296,6 +302,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -326,7 +333,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -337,6 +344,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -367,7 +375,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -378,6 +386,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -408,7 +417,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -419,6 +428,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -449,7 +459,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -460,6 +470,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -490,7 +501,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -501,6 +512,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -531,7 +543,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -542,6 +554,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -572,7 +585,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -583,6 +596,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -613,7 +627,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -624,6 +638,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -654,7 +669,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -665,6 +680,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -695,7 +711,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -706,6 +722,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -736,7 +753,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -747,6 +764,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -754,4 +772,5 @@ Paginator( ), ], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyiwEKT0FEU0pfaTBhMTViQk5vTE9UTHFhUTBoZHB4VTN5SUdfYmhQTzhzM1pGQXQybzdnaVMwajVoSkRNSTl5MGs5M2l4SkM5VGdSbHBVa0xxQ0EiESILWmVlcnJudUxpNUUwAXgBKBIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), + endpoint: browse, ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_top.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_top.snap index 55e4431..3b5c8d0 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_top.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_top.snap @@ -33,7 +33,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -44,6 +44,7 @@ Paginator( count: Some(3), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyfhpLEhpVZ3djVTczT0JWOE9tU0JPS3J0NEFhQUJBZyICCAAqGFVDRWZfQmMtS1ZkN29uU2VpZlMzcHk5ZzILWmVlcnJudUxpNUVAAUgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3djVTczT0JWOE9tU0JPS3J0NEFhQUJBZw%3D%3D"), + endpoint: browse, ), by_owner: false, pinned: false, @@ -74,7 +75,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -85,6 +86,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -115,7 +117,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -126,6 +128,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -156,7 +159,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -167,6 +170,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -197,7 +201,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -208,6 +212,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -243,7 +248,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -254,6 +259,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -290,7 +296,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -301,6 +307,7 @@ Paginator( count: Some(2), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyfhpLEhpVZ3puZDRLcVU1azhBN2F4QjdWNEFhQUJBZyICCAAqGFVDRWZfQmMtS1ZkN29uU2VpZlMzcHk5ZzILWmVlcnJudUxpNUVAAUgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3puZDRLcVU1azhBN2F4QjdWNEFhQUJBZw%3D%3D"), + endpoint: browse, ), by_owner: false, pinned: false, @@ -331,7 +338,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -342,6 +349,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -372,7 +380,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -383,6 +391,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -413,7 +422,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -424,6 +433,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -456,7 +466,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -467,6 +477,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -497,7 +508,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -508,6 +519,7 @@ Paginator( count: Some(2), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyfhpLEhpVZ3lUbFpfa2tYNnJydDV3S0VwNEFhQUJBZyICCAAqGFVDRWZfQmMtS1ZkN29uU2VpZlMzcHk5ZzILWmVlcnJudUxpNUVAAUgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3lUbFpfa2tYNnJydDV3S0VwNEFhQUJBZw%3D%3D"), + endpoint: browse, ), by_owner: false, pinned: false, @@ -538,7 +550,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -549,6 +561,7 @@ Paginator( count: Some(2), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyfhpLEhpVZ3lnM0Q5ZFVJRXJKNHlfTDJsNEFhQUJBZyICCAAqGFVDRWZfQmMtS1ZkN29uU2VpZlMzcHk5ZzILWmVlcnJudUxpNUVAAUgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3lnM0Q5ZFVJRXJKNHlfTDJsNEFhQUJBZw%3D%3D"), + endpoint: browse, ), by_owner: false, pinned: false, @@ -579,7 +592,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -590,6 +603,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -620,7 +634,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -631,6 +645,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -661,7 +676,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -672,6 +687,7 @@ Paginator( count: Some(1), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyfhpLEhpVZ3hZcVlrRkFnV2IzSmFUSFl0NEFhQUJBZyICCAAqGFVDRWZfQmMtS1ZkN29uU2VpZlMzcHk5ZzILWmVlcnJudUxpNUVAAUgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3hZcVlrRkFnV2IzSmFUSFl0NEFhQUJBZw%3D%3D"), + endpoint: browse, ), by_owner: false, pinned: false, @@ -702,7 +718,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -713,6 +729,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -743,7 +760,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -754,6 +771,7 @@ Paginator( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), by_owner: false, pinned: false, @@ -784,7 +802,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -795,6 +813,7 @@ Paginator( count: Some(4), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyfhpLEhpVZ3pvWmY5bkc3VkJOaGNETFJGNEFhQUJBZyICCAAqGFVDRWZfQmMtS1ZkN29uU2VpZlMzcHk5ZzILWmVlcnJudUxpNUVAAUgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3pvWmY5bkc3VkJOaGNETFJGNEFhQUJBZw%3D%3D"), + endpoint: browse, ), by_owner: false, pinned: false, @@ -827,7 +846,7 @@ Paginator( height: 176, ), ], - verification: none, + verification: None, subscriber_count: None, )), publish_date: "[date]", @@ -838,6 +857,7 @@ Paginator( count: Some(1), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyfhpLEhpVZ3lNZXExV0RoU1lBSUozSlFoNEFhQUJBZyICCAAqGFVDRWZfQmMtS1ZkN29uU2VpZlMzcHk5ZzILWmVlcnJudUxpNUVAAUgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3lNZXExV0RoU1lBSUozSlFoNEFhQUJBZw%3D%3D"), + endpoint: browse, ), by_owner: false, pinned: false, @@ -845,4 +865,5 @@ Paginator( ), ], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYy7QIKwwJnZXRfcmFua2VkX3N0cmVhbXMtLUNxY0JDSUFFRlJlMzBUZ2FuQUVLbHdFSTJGOFFnQVFZQnlLTUFidGhsd05sb1pHVEg0ZWRnUlVOc2dUX2pFRFYxOThSRmxGZFJTMVJiQ1hBUl9CTFNGREZKZ2FuS2FoMUVyeERGQU1xY1lnMThmSGdVSnBtZklqV2tER0FscUN1QzJLdU1FQjJYT25sVTZrd3ZBUjY5OHA2a2VGV3hLckxscGdtalZtelg4RHdPaDk1cGlMLVROOTl5YTZ1TDlpb0Y1LWc2Q3dqellGS1RPbnduRTF4V3lVSVdOUjlsRllZRUJRU0JRaUpJQmdBRWdVSWhpQVlBQklIQ0pjZ0VBOFlBUklGQ0lnZ0dBQVNCUWlISUJnQUVnY0loU0FRQnhnQkVnY0loQ0FRQkJnQkdBQSIRIgtaZWVycm51TGk1RTAAeAEoFEIQY29tbWVudHMtc2VjdGlvbg%3D%3D"), + endpoint: browse, ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20220924_newdesc.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20220924_newdesc.snap index 5cef342..8fe4e43 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20220924_newdesc.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20220924_newdesc.snap @@ -91,7 +91,7 @@ VideoDetails( height: 176, ), ], - verification: verified, + verification: Verified, subscriber_count: Some(30900000), ), view_count: 233243423, @@ -104,7 +104,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "aRpkasmB6so", title: "18 de setembro de 2022", length: Some(184), @@ -120,7 +120,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCQYl87Oi9aWzz-CLhTw3Rzg", name: "Allan Nascimento", avatar: [ @@ -130,16 +130,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 days ago"), - view_count: 996, + view_count: Some(996), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "lCXqNCd0m10", title: "aespa(エスパ) Savage + Next Level + Black Mamba💕Stage Mix Compilation🔥에스파 무대모음 KBS Music Bank", length: Some(898), @@ -155,7 +157,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCgqMjKxRWAKUvgYqgomighw", name: "KBS충북", avatar: [ @@ -165,16 +167,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 months ago"), - view_count: 7684395, + view_count: Some(7684395), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "tDukIfFzX18", title: "[MV] Hwa Sa(화사) _ Maria(마리아)", length: Some(231), @@ -190,7 +194,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCweOkPb1wVVH0Q0Tlj4a5Pw", name: "1theK (원더케이)", avatar: [ @@ -200,16 +204,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 260984648, + view_count: Some(260984648), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "e-ORhEE9VVg", title: "Taylor Swift - Blank Space", length: Some(273), @@ -225,7 +231,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCqECaJ8Gagnn7YCbPEzWH6g", name: "Taylor Swift", avatar: [ @@ -235,16 +241,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 years ago"), - view_count: 3035220118, + view_count: Some(3035220118), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "qfVuRQX0ydQ", title: "[MV] Weeekly(위클리) _ After School", length: Some(225), @@ -260,7 +268,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCweOkPb1wVVH0Q0Tlj4a5Pw", name: "1theK (원더케이)", avatar: [ @@ -270,16 +278,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 138451832, + view_count: Some(138451832), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "tyrVtwE8Gv0", title: "NCT U 엔시티 유 \'Make A Wish (Birthday Song)\' MV", length: Some(249), @@ -295,7 +305,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -305,16 +315,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 255458628, + view_count: Some(255458628), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "X-uJtV8ScYk", title: "Stray Kids \"Back Door\" M/V", length: Some(218), @@ -330,7 +342,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -340,16 +352,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 274719671, + view_count: Some(274719671), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "MjCZfZfucEc", title: "ITZY “LOCO” M/V @ITZY", length: Some(233), @@ -365,7 +379,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -375,16 +389,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 203129706, + view_count: Some(203129706), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "2FzSv66c7TQ", title: "A E S P A (에스파) ALL SONGS PLAYLIST 2022 | 에스파 노래 모음", length: Some(3441), @@ -400,7 +416,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCK8S6QMrTk1G8TYQwIyDo-w", name: "LQ K-POP", avatar: [ @@ -410,16 +426,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 531757, + view_count: Some(531757), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CevxZvSJLk8", title: "Katy Perry - Roar (Official)", length: Some(270), @@ -435,7 +453,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCYvmuw-JtVrTZQ-7Y4kd63Q", name: "Katy Perry", avatar: [ @@ -445,16 +463,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("9 years ago"), - view_count: 3656394146, + view_count: Some(3656394146), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "bwmSjveL3Lc", title: "BLACKPINK - \'붐바야 (BOOMBAYAH)\' M/V", length: Some(244), @@ -470,7 +490,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -480,16 +500,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 years ago"), - view_count: 1479871637, + view_count: Some(1479871637), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CM4CkVFmTds", title: "TWICE \"I CAN\'T STOP ME\" M/V", length: Some(221), @@ -505,7 +527,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -515,16 +537,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 456763969, + view_count: Some(456763969), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "ioNng23DkIM", title: "BLACKPINK - \'How You Like That\' M/V", length: Some(184), @@ -540,7 +564,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -550,16 +574,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 1149727787, + view_count: Some(1149727787), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "BL-aIpCLWnU", title: "Black Mamba", length: Some(175), @@ -575,7 +601,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC9GtSLeksfK4yuJ_g1lgQbg", name: "aespa", avatar: [ @@ -585,16 +611,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 86080254, + view_count: Some(86080254), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Jh4QFaPmdss", title: "(G)I-DLE - \'TOMBOY\' Official Music Video", length: Some(198), @@ -610,7 +638,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCritGVo7pLJLUS8wEu32vow", name: "(G)I-DLE (여자)아이들 (Official YouTube Channel)", avatar: [ @@ -620,16 +648,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 169858302, + view_count: Some(169858302), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "WPdWvnAAurg", title: "aespa 에스파 \'Savage\' MV", length: Some(259), @@ -645,7 +675,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -655,16 +685,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 months ago"), - view_count: 216164610, + view_count: Some(216164610), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Z7yNvMzz2zg", title: "Red Velvet 레드벨벳 \'Psycho\' Performance Video", length: Some(216), @@ -680,7 +712,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCk9GmdlDTBfgGRb7vXeRMoQ", name: "Red Velvet", avatar: [ @@ -690,26 +722,32 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 135093083, + view_count: Some(135093083), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILWmVlcnJudUxpNUXAAQHIAQEYACreBjJzNkw2d3pfQkFyOEJBb0Q4ajRBQ2czQ1Bnb0l5dFdIekt5Tm1ZMXBDZ1B5UGdBS0o5SS1KQW9pVUV4eU1UUldiR05sYkRKVE16UlpSMmw1WlZkRU1rOW9jbU4wVGt4Q1psVk9PUW9EOGo0QUNoTFNQZzhLRFZKRVdtVmxjbkp1ZFV4cE5VVUtBX0ktQUFvT3dqNExDTjIyMHJ2Q3h2cVNsQUVLQV9JLUFBb3cwajR0Q2l0U1JFTk1RVXMxZFhsZmF6STNkWFV0UlhSUlgySTFWVEp5TWpaRVRrUmFUMjFPY1Vka1kyTlZTVWRSQ2dQeVBnQUtEc0ktQ3dqZnZzMkxuNFRwbmJRQkNnUHlQZ0FLRGNJLUNnallxdldKeExEazhYc0tBX0ktQUFvT3dqNExDTlNUMDZfUXlOdjZxUUVLQV9JLUFBb093ajRMQ1AyMThJbnd0cldWdHdFS0FfSS1BQW9Od2o0S0NJbmp5ZmpWdHVMMVh3b0Q4ajRBQ2czQ1Bnb0l4LUM1djltdnBwZ3lDZ1B5UGdBS0RzSS1Dd2kwMnZQMC10ZTBydGdCQ2dQeVBnQUtEY0ktQ2dqUDNLU2s3Nno4OVFrS0FfSS1BQW9Od2o0S0NMZTVyN3p2MGVTRWJ3b0Q4ajRBQ2czQ1Bnb0kyNXVaaTVYU2dPY0lDZ1B5UGdBS0RzSS1Dd2lEb1k3dXR2RFp3WW9CQ2dQeVBnQUtEY0ktQ2dqMXRLMkVxY1RtM3dRS0FfSS1BQW9Od2o0S0NNdnRtWl9hZ29TUEpnb0Q4ajRBQ2czQ1Bnb0l1UFdDZ09mWDFmdFlDZ1B5UGdBS0RjSS1DZ2k0dHNfbnpMZWozbWNTRkFBQ0JBWUlDZ3dPRUJJVUZoZ2FIQjRnSWlRbUdnUUlBQkFCR2dRSUFoQURHZ1FJQkJBRkdnUUlCaEFIR2dRSUNCQUpHZ1FJQ2hBTEdnUUlEQkFOR2dRSURoQVBHZ1FJRUJBUkdnUUlFaEFUR2dRSUZCQVZHZ1FJRmhBWEdnUUlHQkFaR2dRSUdoQWJHZ1FJSEJBZEdnUUlIaEFmR2dRSUlCQWhHZ1FJSWhBakdnUUlKQkFsR2dRSUpoQW5LaFFBQWdRR0NBb01EaEFTRkJZWUdod2VJQ0lrSmdqD3dhdGNoLW5leHQtZmVlZA%3D%3D"), + visitor_data: Some("CgtCeURHR09uNlJ5TSjOiLqZBg%3D%3D"), + endpoint: next, ), top_comments: Paginator( count: Some(705000), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyJSIRIgtaZWVycm51TGk1RTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), + endpoint: next, ), latest_comments: Paginator( count: Some(705000), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyOCIRIgtaZWVycm51TGk1RTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_new_continuation.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_new_continuation.snap index baca23f..9d456b3 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_new_continuation.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_new_continuation.snap @@ -91,7 +91,7 @@ VideoDetails( height: 176, ), ], - verification: verified, + verification: Verified, subscriber_count: Some(31000000), ), view_count: 234258725, @@ -104,7 +104,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "WPdWvnAAurg", title: "aespa 에스파 \'Savage\' MV", length: Some(259), @@ -120,7 +120,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -130,16 +130,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 218055265, + view_count: Some(218055265), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "4TWR90KJl84", title: "aespa 에스파 \'Next Level\' MV", length: Some(236), @@ -155,7 +157,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -165,16 +167,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 248023999, + view_count: Some(248023999), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "uR8Mrt1IpXg", title: "Red Velvet 레드벨벳 \'Psycho\' MV", length: Some(216), @@ -190,7 +194,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -200,16 +204,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 347102621, + view_count: Some(347102621), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "UUUWIGx3hDE", title: "ITZY \"WANNABE\" Performance Video", length: Some(198), @@ -225,7 +231,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCDhM2k2Cua-JdobAh5moMFg", name: "ITZY", avatar: [ @@ -235,16 +241,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 97453393, + view_count: Some(97453393), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "NoYKBAajoyo", title: "EVERGLOW (에버글로우) - DUN DUN MV", length: Some(209), @@ -260,7 +268,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_pwIXKXNm5KGhdEVzmY60A", name: "Stone Music Entertainment", avatar: [ @@ -270,16 +278,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 266364690, + view_count: Some(266364690), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "32si5cfrCNc", title: "BLACKPINK - \'How You Like That\' DANCE PERFORMANCE VIDEO", length: Some(181), @@ -295,7 +305,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -305,16 +315,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 1254749733, + view_count: Some(1254749733), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CM4CkVFmTds", title: "TWICE \"I CAN\'T STOP ME\" M/V", length: Some(221), @@ -330,7 +342,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -340,16 +352,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 459831562, + view_count: Some(459831562), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "UZPZyd5vE1c", title: "Shut Down", length: Some(176), @@ -365,7 +379,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -375,16 +389,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 7118730, + view_count: Some(7118730), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CKZvWhCqx1s", title: "ROSÉ - \'On The Ground\' M/V", length: Some(189), @@ -400,7 +416,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -410,16 +426,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 300492226, + view_count: Some(300492226), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "fE2h3lGlOsk", title: "ITZY \"WANNABE\" M/V @ITZY", length: Some(219), @@ -435,7 +453,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -445,16 +463,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 469178299, + view_count: Some(469178299), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Y8JFxS1HlDo", title: "IVE 아이브 \'LOVE DIVE\' MV", length: Some(179), @@ -470,7 +490,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCYDmx2Sfpnaxg488yBpZIGg", name: "starshipTV", avatar: [ @@ -480,16 +500,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 161053206, + view_count: Some(161053206), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "dNCWe_6HAM8", title: "LISA - \'MONEY\' EXCLUSIVE PERFORMANCE VIDEO", length: Some(171), @@ -505,7 +527,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -515,16 +537,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 694135299, + view_count: Some(694135299), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "tyrVtwE8Gv0", title: "NCT U 엔시티 유 \'Make A Wish (Birthday Song)\' MV", length: Some(249), @@ -540,7 +564,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -550,16 +574,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 256797155, + view_count: Some(256797155), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "gU2HqP4NxUs", title: "BLACKPINK - ‘Pretty Savage’ 1011 SBS Inkigayo", length: Some(208), @@ -575,7 +601,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -585,16 +611,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 285625201, + view_count: Some(285625201), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Ujb-gvqsoi0", title: "Red Velvet - IRENE & SEULGI \'Monster\' MV", length: Some(182), @@ -610,7 +638,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -620,16 +648,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 127297352, + view_count: Some(127297352), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "KhTeiaCezwM", title: "[MV] MAMAMOO (마마무) - HIP", length: Some(211), @@ -645,7 +675,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCuhAUMLzJxlP1W7mEk0_6lA", name: "MAMAMOO", avatar: [ @@ -655,16 +685,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 357346135, + view_count: Some(357346135), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "XJDPzNzQ3RE", title: "Run BTS! 2022 Special Episode - Fly BTS Fly Part 1", length: Some(2070), @@ -680,7 +712,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCLkAepWjdylmXSltofFvsYQ", name: "BANGTANTV", avatar: [ @@ -690,16 +722,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 hours ago"), - view_count: 748983, + view_count: Some(748983), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "0lXwMdnpoFQ", title: "aespa 에스파 \'도깨비불 (Illusion)\' Dance Practice", length: Some(210), @@ -715,7 +749,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC473RoZQE2gtgZJ61ZW0ZDQ", name: "SMP FLOOR", avatar: [ @@ -725,16 +759,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 12347702, + view_count: Some(12347702), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "IHNzOHi8sJs", title: "BLACKPINK - ‘뚜두뚜두 (DDU-DU DDU-DU)’ M/V", length: Some(216), @@ -750,7 +786,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -760,26 +796,32 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 1964840790, + view_count: Some(1964840790), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILWmVlcnJudUxpNUXAAQHIAQEYACqiDDJzNkw2d3lTQ1FxUENRb0Q4ajRBQ2czQ1Bnb0l1UFdDZ09mWDFmdFlDZ1B5UGdBS0RzSS1Dd2pPcjZhVTlMN2ttdUVCQ2dQeVBnQUtFdEktRHdvTlVrUmFaV1Z5Y201MVRHazFSUW9EOGo0QUNnN0NQZ3NJLU1xaTZ1MlZ3NC01QVFvRDhqNEFDZzNDUGdvSXNZamU0NGJFeGFKUkNnUHlQZ0FLRGNJLUNnaXF4bzYxd01DQ3d6WUtBX0ktQUFvT3dqNExDTmVSckxfYzNNaTEzd0VLQV9JLUFBb053ajRLQ051Ym1ZdVYwb0RuQ0FvRDhqNEFDZzNDUGdvSTE2YTg4NTI1OXNsUkNnUHlQZ0FLRGNJLUNnamJqcXVGb2V1YjB3Z0tBX0ktQUFvTndqNEtDTW4xbEkzbHUtaW1mQW9EOGo0QUNnM0NQZ29JdXFpZTZ0SzRrZUZqQ2dQeVBnQUtEY0ktQ2dqUGdaejB2OC1sNkhRS0FfSS1BQW9Pd2o0TENQMjE4SW53dHJXVnR3RUtBX0ktQUFvT3dqNExDTXVLdF9DUDllR21nUUVLQV9JLUFBb053ajRLQ0szRXN0V3YwTC1iVWdvRDhqNEFDZzNDUGdvSWc1NzdoSnJSdDRvcUNnUHlQZ0FLRGNJLUNnaVJ1c1BtemZtenlGd0tBX0ktQUFvT3dqNExDTlRBcHMtZGh2eXEwZ0VLQV9JLUFBb053ajRLQ0p2aDhzV0g1OXk1SUFvRDhqNEFDaF9TUGh3S0dsSkVRVTk2ZFZaM1JWbDNZMUZFTkhWMmNHZEJUbU5JU0ZWM0NoX1NQaHdLR2xKRVFVOWZjQzFWYmpCSGVUbHVXRlZ0Wm1kaE0xTlNYMXAzQ2hfU1Bod0tHbEpFUVU5cFEwaENhR3R1VTBSd09HcFZWekJPUzFoWU9FMVJDaF9TUGh3S0dsSkVRVTlYWjBsd1lVbDZha1p6UVhkeE5GOXhWR2hyTlROQkNoX1NQaHdLR2xKRVFVOXFNVkpuZEhkZmVtZHJibWxSWkdkTU5XTnlVRmxCQ2hfU1Bod0tHbEpFUVU4NWExbHRhMU5KVG5CVGFYVldTalEzUjNkT1RWSm5DaF9TUGh3S0dsSkVRVTlGYjNOTlVtbHlhM1ZKTjNvNE1tSmZia0oyUjNoQkNoX1NQaHdLR2xKRVFVOW1PRlExTURaUVZGcFVWRmxDWm01RVRVNURiR0ZSQ2hfU1Bod0tHbEpFUVU5UllqSlhRWGxLYTBwMlRURmhaMGRYZEhkRkxVOUJDaF9TUGh3S0dsSkVRVTlNWDFGNk1scFJRbUZNUkROTFExTnFWalpYZG5wM0NoX1NQaHdLR2xKRVFVOXpjeTFGWVdSRFpHZzBUVmxYV0hsMGFtWkpabFYzQ2hfU1Bod0tHbEpFUVU4MVRraFVXblJGV0ROSGJIWlhRMjgyYTJOdGFrdDNDaF9TUGh3S0dsSkVRVTlMWDBjMVRVZzFaM0ZJUTNRd1VXdENZVlZJTjJwUkNoX1NQaHdLR2xKRVFVOVpUWEZhWlV4U1RXMXhaRW8zZGs5b09UQXRhME5CQ2hfU1Bod0tHbEpFUVU4eVNGbEJhMFpIYzBGSmFWVmthRE5NVUhGRE5UZG5FaFVBQWdRR0NBb01EaEFTRkJZWUdod2VJQ0lrSmlnYUJBZ0FFQUVhQkFnQ0VBTWFCQWdFRUFVYUJBZ0dFQWNhQkFnSUVBa2FCQWdLRUFzYUJBZ01FQTBhQkFnT0VBOGFCQWdRRUJFYUJBZ1NFQk1hQkFnVUVCVWFCQWdXRUJjYUJBZ1lFQmthQkFnYUVCc2FCQWdjRUIwYUJBZ2VFQjhhQkFnZ0VDRWFCQWdpRUNNYUJBZ2tFQ1VhQkFnbUVDY2FCQWdvRUNrYUJBZ29FQ29hQkFnb0VDc2FCQWdvRUN3YUJBZ29FQzBhQkFnb0VDNGFCQWdvRUM4YUJBZ29FREFhQkFnb0VERWFCQWdvRURJYUJBZ29FRE1hQkFnb0VEUWFCQWdvRURVYUJBZ29FRFlhQkFnb0VEY3FGUUFDQkFZSUNnd09FQklVRmhnYUhCNGdJaVFtS0FqD3dhdGNoLW5leHQtZmVlZA%3D%3D"), + visitor_data: Some("Cgs2V0p6ZW5ab1ozTSjkrpaaBg%3D%3D"), + endpoint: next, ), top_comments: Paginator( count: Some(705000), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyJSIRIgtaZWVycm51TGk1RTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), + endpoint: next, ), latest_comments: Paginator( count: Some(705000), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyOCIRIgtaZWVycm51TGk1RTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_rec_isr.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_rec_isr.snap index 45d6370..27c86f6 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_rec_isr.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_20221011_rec_isr.snap @@ -287,7 +287,7 @@ VideoDetails( height: 176, ), ], - verification: verified, + verification: Verified, subscriber_count: Some(14900000), ), view_count: 1251797, @@ -525,7 +525,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "t03rmc-prJo", title: "This PC took 600 HOURS to Build!", length: Some(1505), @@ -541,7 +541,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -551,16 +551,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 3449572, + view_count: Some(3449572), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "4ozYlgOuYis", title: "They told me I was stupid - heating my pool with computers", length: Some(691), @@ -576,7 +578,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -586,16 +588,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 3209930, + view_count: Some(3209930), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "THxkY59_xko", title: "Is the fastest GPU ALWAYS the best?", length: Some(979), @@ -611,7 +615,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -621,16 +625,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 hours ago"), - view_count: 640179, + view_count: Some(640179), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "UJ-KZzVUV7U", title: "This toaster cost HOW MUCH?? - Revolution InstaGLO R270 Toaster", length: Some(880), @@ -646,7 +652,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCdBK94H6oZT2Q7l0-b0xmMg", name: "ShortCircuit", avatar: [ @@ -656,16 +662,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 905709, + view_count: Some(905709), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "yayAQAC1XiE", title: "Intel PLEASE let me Overclock this!", length: Some(799), @@ -681,7 +689,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -691,16 +699,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 days ago"), - view_count: 998245, + view_count: Some(998245), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "y4T374GtKLI", title: "When The Grid Goes Down: How To Power Essential Devices (i.e., Refrigerator)", length: Some(1239), @@ -716,7 +726,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCmb2QRAjdnkse21CtxAQ-cA", name: "City Prepping", avatar: [ @@ -726,16 +736,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 132460, + view_count: Some(132460), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "b3x28s61q3c", title: "The most EXPENSIVE thing I own.", length: Some(887), @@ -751,7 +763,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -761,16 +773,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 2372992, + view_count: Some(2372992), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "LQ95XJAwaoc", title: "My favorite car (sucks) - Lucid Air GT", length: Some(1162), @@ -786,7 +800,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCdBK94H6oZT2Q7l0-b0xmMg", name: "ShortCircuit", avatar: [ @@ -796,16 +810,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 565416, + view_count: Some(565416), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "WVjtK71qqXU", title: "I bought a SECOND GPU… but NOT for gaming…", length: Some(754), @@ -821,7 +837,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -831,16 +847,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 1199845, + view_count: Some(1199845), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "vtvFVH9JdNI", title: "I bought every Nintendo Console EVER.", length: Some(1381), @@ -856,7 +874,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCMiJRAwDNSNzuYeN2uWa0pA", name: "Mrwhosetheboss", avatar: [ @@ -866,16 +884,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 1379793, + view_count: Some(1379793), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "J6Ga4wciA2k", title: "THIS Wish.com Gaming PC is WORSE!", length: Some(1545), @@ -891,7 +911,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -901,16 +921,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 2775764, + view_count: Some(2775764), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CsoKWsZ-Tyw", title: "The Personal Gaming Theater - HOLY $H!T Samsung Odyssey Ark", length: Some(1182), @@ -926,7 +948,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -936,16 +958,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 2449262, + view_count: Some(2449262), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "9T98VsMe3oo", title: "How are we going to do this?", length: Some(1124), @@ -961,7 +985,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -971,16 +995,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 4321218, + view_count: Some(4321218), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "5Hxr9k5Vdc4", title: "Building the $1,000,000 Computer", length: Some(1659), @@ -996,7 +1022,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1006,16 +1032,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 3270062, + view_count: Some(3270062), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "12Hcbx33Rb4", title: "BREAKING NEWS! - EVGA will no longer do business with NVIDIA", length: Some(1262), @@ -1031,7 +1059,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCkWQ0gDrqOCarmUKmppD7GQ", name: "JayzTwoCents", avatar: [ @@ -1041,16 +1069,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 1274410, + view_count: Some(1274410), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "EHkkwCjQzsc", title: "Prepper (2016) | Full Post-Apocalyptic Thriller Movie HD", length: Some(5982), @@ -1066,7 +1096,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCRX7UEyE8kp35mPrgC2sosA", name: "JoBlo Movies", avatar: [ @@ -1076,16 +1106,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 209854, + view_count: Some(209854), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "AOdp09SYhCc", title: "This Is So Embarrassing! - Building a PC with My Sister", length: Some(1063), @@ -1101,7 +1133,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1111,16 +1143,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 2453269, + view_count: Some(2453269), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CTIpNtHWVtQ", title: "Why Pay $1000 for a 25 year old PC! - NIXSYS Windows 98 PC", length: Some(1112), @@ -1136,7 +1170,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1146,16 +1180,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 1478434, + view_count: Some(1478434), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "3RIp7CwkBeA", title: "I Hope You Have a LOT of Money... RTX 4000 Announced", length: Some(569), @@ -1171,7 +1207,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1181,16 +1217,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 1816036, + view_count: Some(1816036), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "HZiaHEmE9PQ", title: "Buying a Chromebook was a BIG MISTAKE", length: Some(880), @@ -1206,7 +1244,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1216,26 +1254,32 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("9 days ago"), - view_count: 1625226, + view_count: Some(1625226), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILbkZEQnhCVWZFNzTAAQHIAQEYACqIBjJzNkw2d3lfQkFxOEJBb0Q4ajRBQ2c3Q1Bnc0ltdG1tX1p6ei1xYTNBUW9EOGo0QUNnN0NQZ3NJcThTNW5lQ1N0c2JpQVFvRDhqNEFDZzNDUGdvSXlvel8tN21NbWI1TUNnUHlQZ0FLRGNJLUNnaTFyOUdxODh6aXoxQUtBX0ktQUFvT3dqNExDS0c4MVlXQWlLRFd5UUVLQV9JLUFBb093ajRMQ0xMUnRJMzRfYjNDeXdFS0FfSS1BQW9Od2o0S0NQZlcxdldzM3AyLWJ3b0Q4ajRBQ2czQ1Bnb0loOVhCZ2NtcjNvY3RDZ1B5UGdBS0RjSS1DZ2oxMHFycnU2VzdyRmtLQV9JLUFBb093ajRMQ05McHBmckhxdkh0dmdFS0FfSS1BQW9Od2o0S0NPbUdpTG13M09iUUp3b0Q4ajRBQ2czQ1Bnb0lySjc1czZ6TGd1VUtDZ1B5UGdBS0RzSS1Dd2lLdmZ1WTdJcmZuX1VCQ2dQeVBnQUtEc0ktQ3dqTzY5WHk1UDZhdnVRQkNnUHlQZ0FLRHNJLUN3aS1pOTN2OFkzM3NOY0JDZ1B5UGdBS0RjSS1DZ2pIbmNQR2dwakp2QkFLQV9JLUFBb013ajRKQ0tlSTRxUzl1dHB6Q2dQeVBnQUtEY0ktQ2dqVXJkbU83YWFLbVFrS0FfSS1BQW9Pd2o0TENPQ0xrT0hDdllxSjNRRUtBX0ktQUFvTndqNEtDUFRwazh6RXc2Yk1IUklVQUFJRUJnZ0tEQTRRRWhRV0dCb2NIaUFpSkNZYUJBZ0FFQUVhQkFnQ0VBTWFCQWdFRUFVYUJBZ0dFQWNhQkFnSUVBa2FCQWdLRUFzYUJBZ01FQTBhQkFnT0VBOGFCQWdRRUJFYUJBZ1NFQk1hQkFnVUVCVWFCQWdXRUJjYUJBZ1lFQmthQkFnYUVCc2FCQWdjRUIwYUJBZ2VFQjhhQkFnZ0VDRWFCQWdpRUNNYUJBZ2tFQ1VhQkFnbUVDY3FGQUFDQkFZSUNnd09FQklVRmhnYUhCNGdJaVFtag93YXRjaC1uZXh0LWZlZWQ%3D"), + visitor_data: Some("Cgtidzg4MlRTb3FKSSiqipeaBg%3D%3D"), + endpoint: next, ), top_comments: Paginator( count: Some(3200), items: [], ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyJSIRIgtuRkRCeEJVZkU3NDAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), + endpoint: next, ), latest_comments: Paginator( count: Some(3200), items: [], ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyOCIRIgtuRkRCeEJVZkU3NDABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_agegate.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_agegate.snap index f7eaadb..263e711 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_agegate.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_agegate.snap @@ -26,7 +26,7 @@ VideoDetails( height: 176, ), ], - verification: none, + verification: None, subscriber_count: Some(1480), ), view_count: 205, @@ -40,15 +40,18 @@ VideoDetails( count: Some(0), items: [], ctoken: None, + endpoint: browse, ), top_comments: Paginator( count: None, items: [], ctoken: Some("Eg0SC0hSS3UwY3Zycl9vGAYyJSIRIgtIUkt1MGN2cnJfbzABeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), + endpoint: next, ), latest_comments: Paginator( count: None, items: [], ctoken: Some("Eg0SC0hSS3UwY3Zycl9vGAYyOCIRIgtIUkt1MGN2cnJfbzABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_ccommons.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_ccommons.snap index 83554b9..47c7727 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_ccommons.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_ccommons.snap @@ -38,7 +38,7 @@ VideoDetails( height: 176, ), ], - verification: none, + verification: None, subscriber_count: Some(172000), ), view_count: 2493983, @@ -51,7 +51,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "-YpwsdRKt8Q", title: "SpiegelMining – Reverse Engineering von Spiegel-Online (33c3)", length: Some(3526), @@ -67,7 +67,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -77,16 +77,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 years ago"), - view_count: 2749364, + view_count: Some(2749364), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "4z3mu63yxII", title: "Gregor Gysi & Martin Sonneborn", length: Some(5272), @@ -102,7 +104,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCBWSgdr27NcLig0XzWLq2gQ", name: "MISS-VERSTEHEN SIE MICH RICHTIG", avatar: [ @@ -112,16 +114,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 2266658, + view_count: Some(2266658), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "WhgRRpA3b2c", title: "36C3 - Verkehrswende selber hacken", length: Some(3176), @@ -137,7 +141,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -147,16 +151,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 260941, + view_count: Some(260941), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "5qNHtdN07FM", title: "GPN16: Wie baut man eigentlich Raumschiffe (urs)", length: Some(5172), @@ -172,7 +178,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -182,16 +188,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 years ago"), - view_count: 1229987, + view_count: Some(1229987), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "7FeqF1-Z1g0", title: "David Kriesel: Traue keinem Scan, den du nicht selbst gefälscht hast", length: Some(3820), @@ -207,7 +215,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -217,16 +225,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 years ago"), - view_count: 6095028, + view_count: Some(6095028), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "1vcP9UWrWBI", title: "Easterhegg 2019 - Kernreaktoren", length: Some(7263), @@ -242,7 +252,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -252,16 +262,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 46470, + view_count: Some(46470), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "jnp1veXQf7U", title: "Blockchain - Ein außer Kontrolle geratenes Laborexperiment? #GPN19", length: Some(3362), @@ -277,7 +289,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -287,16 +299,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 25136, + view_count: Some(25136), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "77OlKRkaixo", title: "leyrer, MacLemon: E-Mail. Hässlich, aber es funktioniert #eh16", length: Some(6998), @@ -312,7 +326,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -322,16 +336,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 years ago"), - view_count: 44410, + view_count: Some(44410), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "u29--YNGMyg", title: "Physikalisches Kolloquium 22. Juli 2011 - Vortrag von Prof. Dr. Harald Lesch", length: Some(6715), @@ -347,7 +363,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCvZLsBb-8Og4FvBUom9zPHQ", name: "Universität Bayreuth", avatar: [ @@ -357,16 +373,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 years ago"), - view_count: 4184357, + view_count: Some(4184357), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "urt2_ACal9A", title: "CCC-Jahresrückblick 2016 (33c3)", length: Some(8170), @@ -382,7 +400,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -392,16 +410,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 years ago"), - view_count: 36111, + view_count: Some(36111), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "PnBs9oH2Lx8", title: "Easterhegg 2019 - Wie ich die Regierung gehackt habe", length: Some(3147), @@ -417,7 +437,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -427,16 +447,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 20322, + view_count: Some(20322), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "yaCiVvBD-xc", title: "Mathias Dalheimer: Wie man einen Blackout verursacht", length: Some(3748), @@ -452,7 +474,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -462,16 +484,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 years ago"), - view_count: 482258, + view_count: Some(482258), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "1PJnEwoFSXo", title: "Das Geheimnis der Hieroglyphen | Doku HD | ARTE", length: Some(5541), @@ -487,7 +511,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCLLibJTCy3sXjHLVaDimnpQ", name: "ARTEde", avatar: [ @@ -497,16 +521,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("12 days ago"), - view_count: 427756, + view_count: Some(427756), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "iIDZ8pJKLZA", title: "36C3 ChaosWest: Bahn API Chaos", length: Some(3056), @@ -522,7 +548,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -532,16 +558,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 26926, + view_count: Some(26926), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "PhUQN6fd5O4", title: "35C3 - Jahresrückblick des CCC 2018", length: Some(8102), @@ -557,7 +585,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -567,16 +595,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 126093, + view_count: Some(126093), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "bzr0c8qzQoc", title: "GPN19 - Beton", length: Some(3972), @@ -592,7 +622,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -602,16 +632,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 13243, + view_count: Some(13243), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "IeX1F-Jjq9E", title: "Lars “Pylon” Weiler (DC4LW): Weltraumkommunikation", length: Some(5075), @@ -627,7 +659,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -637,16 +669,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 years ago"), - view_count: 80624, + view_count: Some(80624), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "gsnL4m57MCM", title: "David Kriesel: SpiegelMining – Reverse Engineering von Spiegel-Online", length: Some(3526), @@ -662,7 +696,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCeO-zvUfuEdPMDoNST6hy1A", name: "Killuminati ∆", avatar: [ @@ -672,16 +706,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 years ago"), - view_count: 29009, + view_count: Some(29009), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "uEEHq6f8RsM", title: "Leyrer: Moderne Linux Kommandozeilenwerkzeuge - Edition \"Allein zu Haus\"", length: Some(3716), @@ -697,7 +733,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2TXq_t06Hjdr2g_KdKpHQg", name: "media.ccc.de", avatar: [ @@ -707,26 +743,32 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 months ago"), - view_count: 67538, + view_count: Some(67538), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILMHJiOUNmT3ZvamvAAQHIAQEYACqrBjJzNkw2d3paQkFyV0JBb0Q4ajRBQ2c3Q1Bnc0l4Ty1xb3AyV25NWDVBUW9EOGo0QUNnN0NQZ3NJZ29uTDc3clgtWjdqQVFvRDhqNEFDZzNDUGdvSTU5N2RnZW1vaEl4YUNnUHlQZ0FLSWRJLUhnb2NVa1JEVFZWRE1sUlljVjkwTURaSWFtUnlNbWRmUzJSTGNFaFJad29EOGo0QUNnN0NQZ3NJMDlqVG05MzIwZEhtQVFvRDhqNEFDZzdDUGdzSWphem5fUFhDNnF2c0FRb0Q4ajRBQ2c3Q1Bnc0lrckN0cmRULXdfdldBUW9EOGo0QUNnN0NQZ3NJdGZfQnJ0NjNuYjJPQVFvRDhqNEFDZzdDUGdzSW1wYnF5SkdsNmRudkFRb0Q4ajRBQ2c3Q1Bnc0lxT2FZbXBqZjM3ZTdBUW9EOGo0QUNnN0NQZ3NJMEtfcWhNRGYzZDI2QVFvRDhqNEFDZzNDUGdvSW45N1lqLWllbTdnLUNnUHlQZ0FLRHNJLUN3aVg5by1DNzhxbzBNa0JDZ1B5UGdBS0RzSS1Dd2o2a3BYUXNPS1otZFFCQ2dQeVBnQUtEc0ktQ3dpUTI2aVNxYjYyd0lnQkNnUHlQZ0FLRGNJLUNnanV5ZmUtLW9iRWlqNEtBX0ktQUFvTndqNEtDSWVGemRXOGpyMmRid29EOGo0QUNnM0NQZ29JMGRlT2tfNmlfZkloQ2dQeVBnQUtEc0ktQ3dpajRPenpwdnp5NUlJQkNnUHlQZ0FLRHNJLUN3akRqZkdfdXZYQm9MZ0JFaFFBQWdRR0NBb01EaEFTRkJZWUdod2VJQ0lrSmhvRUNBQVFBUm9FQ0FJUUF4b0VDQVFRQlJvRUNBWVFCeG9FQ0FnUUNSb0VDQW9RQ3hvRUNBd1FEUm9FQ0E0UUR4b0VDQkFRRVJvRUNCSVFFeG9FQ0JRUUZSb0VDQllRRnhvRUNCZ1FHUm9FQ0JvUUd4b0VDQndRSFJvRUNCNFFIeG9FQ0NBUUlSb0VDQ0lRSXhvRUNDUVFKUm9FQ0NZUUp5b1VBQUlFQmdnS0RBNFFFaFFXR0JvY0hpQWlKQ1lqD3dhdGNoLW5leHQtZmVlZA%3D%3D"), + visitor_data: Some("CgtoY1pQUF8wNW1qayjSjpSZBg%3D%3D"), + endpoint: next, ), top_comments: Paginator( count: Some(2200), items: [], ctoken: Some("Eg0SCzByYjlDZk92b2prGAYyJSIRIgswcmI5Q2ZPdm9qazAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), + endpoint: next, ), latest_comments: Paginator( count: Some(2200), items: [], ctoken: Some("Eg0SCzByYjlDZk92b2prGAYyOCIRIgswcmI5Q2ZPdm9qazABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_chapters.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_chapters.snap index c14605f..6ba8145 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_chapters.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_chapters.snap @@ -281,7 +281,7 @@ VideoDetails( height: 176, ), ], - verification: verified, + verification: Verified, subscriber_count: Some(14800000), ), view_count: 971966, @@ -519,7 +519,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "AOdp09SYhCc", title: "This Is So Embarrassing!", length: Some(1063), @@ -535,7 +535,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -545,16 +545,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 days ago"), - view_count: 1862544, + view_count: Some(1862544), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CY3OQh-7wIk", title: "The Computer I Would Actually BUY", length: Some(6478), @@ -570,7 +572,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -580,16 +582,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("Streamed 8 days ago"), - view_count: 946996, + view_count: Some(946996), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "LQ95XJAwaoc", title: "My favorite car (sucks)", length: Some(1162), @@ -605,7 +609,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCdBK94H6oZT2Q7l0-b0xmMg", name: "ShortCircuit", avatar: [ @@ -615,16 +619,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 349251, + view_count: Some(349251), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "mhMQeJ5Qmp0", title: "The Apple Newton MessagePad.", length: Some(758), @@ -640,7 +646,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC7Jwj9fkrf1adN4fMmTkpug", name: "DankPods", avatar: [ @@ -650,16 +656,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 day ago"), - view_count: 375458, + view_count: Some(375458), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "1ctXiZsN6ac", title: "The Reviewer Got Reviewed - WAN Show September 9, 2022", length: Some(10265), @@ -675,7 +683,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -685,16 +693,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("Streamed 6 days ago"), - view_count: 734463, + view_count: Some(734463), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CMR9z9Xr8GM", title: "Storing Solar Power on my ROOF!!!", length: Some(1028), @@ -710,7 +720,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCKd49wwdEdIoM-7Fumhwmog", name: "Quint BUILDs", avatar: [ @@ -720,16 +730,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 months ago"), - view_count: 2773698, + view_count: Some(2773698), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "fT2KhJ8W-Kg", title: "How gas pumps know when to turn themselves off", length: Some(836), @@ -745,7 +757,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEIwxahdLz7bap-VDs9h35A", name: "Steve Mould", avatar: [ @@ -755,16 +767,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 hours ago"), - view_count: 219605, + view_count: Some(219605), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "12Hcbx33Rb4", title: "BREAKING NEWS! - EVGA will no longer do business with NVIDIA", length: Some(1262), @@ -780,7 +794,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCkWQ0gDrqOCarmUKmppD7GQ", name: "JayzTwoCents", avatar: [ @@ -790,16 +804,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 hours ago"), - view_count: 145345, + view_count: Some(145345), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "QW1SsqmaIuE", title: "I Surprised My Subscriber with his Dream Gaming Setup! - Season 8", length: Some(2177), @@ -815,7 +831,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UChIZGfcnjHI0DG4nweWEduw", name: "TechSource", avatar: [ @@ -825,16 +841,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 hours ago"), - view_count: 50033, + view_count: Some(50033), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "JAcSNL1T3OA", title: "Why Did I Drill 1756 Holes in This?", length: Some(1293), @@ -850,7 +868,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVveEFTOd6khhSXXnRhxJmg", name: "Fireball Tool", avatar: [ @@ -860,16 +878,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 month ago"), - view_count: 1163652, + view_count: Some(1163652), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "ZVtOss1U7_s", title: "VW Beetle converted to electric in a day", length: Some(826), @@ -885,7 +905,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCq1Oqk1I7zeYlDiJTFWLoFA", name: "Electric Classic Cars", avatar: [ @@ -895,16 +915,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 3266169, + view_count: Some(3266169), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "2kJDTzFtUr4", title: "How ASML, TSMC And Intel Dominate The Chip Market | CNBC Marathon", length: Some(3399), @@ -920,7 +942,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCvJJ_dzjViJCoLf5uKUTwoA", name: "CNBC", avatar: [ @@ -930,16 +952,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 678935, + view_count: Some(678935), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "0rCbfsuKdYw", title: "I bought every Playstation Ever.", length: Some(1046), @@ -955,7 +979,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCMiJRAwDNSNzuYeN2uWa0pA", name: "Mrwhosetheboss", avatar: [ @@ -965,16 +989,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 7569956, + view_count: Some(7569956), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "sbdU7AkH6QM", title: "Reviewing Free Energy Generators. A Response to My Video \"Nikola Tesla\'s Greatest Invention\"- 102", length: Some(1387), @@ -990,7 +1016,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_SLthyNX_ivd-dmsFgmJVg", name: "Jeremy Fielding", avatar: [ @@ -1000,16 +1026,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 months ago"), - view_count: 3374461, + view_count: Some(3374461), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "zcchDu7KoYs", title: "AMD’s Victory Lap - HOLY $H!T Threadripper Pro 5995WX", length: Some(872), @@ -1025,7 +1053,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1035,16 +1063,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 days ago"), - view_count: 1322625, + view_count: Some(1322625), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "pd6DsSjqhFE", title: "Top Gear Satisfaction Survey Compilation", length: Some(986), @@ -1060,7 +1090,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCupQghOyPai8Hxg4RqMERvA", name: "incT", avatar: [ @@ -1070,16 +1100,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 255945, + view_count: Some(255945), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "2K5Gqp1cEcM", title: "Why our Screwdriver took 3 YEARS", length: Some(1752), @@ -1095,7 +1127,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1105,16 +1137,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 weeks ago"), - view_count: 2930532, + view_count: Some(2930532), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "t03rmc-prJo", title: "This PC took 600 HOURS to Build!", length: Some(1505), @@ -1130,7 +1164,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCXuqSBlHAE6Xw-yeJA0Tunw", name: "Linus Tech Tips", avatar: [ @@ -1140,16 +1174,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("12 days ago"), - view_count: 2743664, + view_count: Some(2743664), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "QTH9m6MDIfc", title: "One Year Ago I Built an Ecosystem, This Happened", length: Some(485), @@ -1165,7 +1201,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCYmna5rFHIesFteksAvFOfg", name: "Dr. Plants", avatar: [ @@ -1175,26 +1211,32 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 weeks ago"), - view_count: 7958495, + view_count: Some(7958495), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILbkZEQnhCVWZFNzTAAQHIAQEYACqkBjJzNkw2d3pVQkFyUkJBb0Q4ajRBQ2d6Q1Bna0lwNGppcEwyNjJuTUtBX0ktQUFvTndqNEtDSW1CN18yaHlQUEdDUW9EOGo0QUNnM0NQZ29JaDlYQmdjbXIzb2N0Q2dQeVBnQUtEc0ktQ3dpZHRjTHlpWV9FaVpvQkNnUHlQZ0FLRHNJLUN3aW4wN2ZZbWZIVjVkVUJDZ1B5UGdBS0RjSS1DZ2pqNEstdl9ibWY0Z2dLQV9JLUFBb053ajRLQ0tqeDJfakowT0tlZlFvRDhqNEFDZzdDUGdzSXZvdmQ3X0dOOTdEWEFRb0Q4ajRBQ2czQ1Bnb0k0Y1hvektyVzFMWkJDZ1B5UGdBS0RjSS1DZ2pndWNfcXk4YkVneVFLQV9JLUFBb053ajRLQ1B2ZjAtcXMxdE90WlFvRDhqNEFDaUhTUGg0S0hGSkVRMDFWUTFoMWNWTkNiRWhCUlRaWWR5MTVaVXBCTUZSMWJuY0tBX0ktQUFvT3dqNExDTDZsdFl2ejZaQ2gyZ0VLQV9JLUFBb093ajRMQ0l6cnFkenM3NmJZMGdFS0FfSS1BQW9Pd2o0TENJUFNuOGpBbmRYYnNRRUtBX0ktQUFvT3dqNExDSXZEcXZidW9jamp6UUVLQV9JLUFBb093ajRMQ05HSXFzZVM5cUR2cFFFS0FfSS1BQW9Pd2o0TENNT2o4T3FwMVpIWDJBRUtBX0ktQUFvT3dqNExDSnJacHYyYzhfcW10d0VLQV9JLUFBb053ajRLQ1BmRGpKaTZzXy1ZUVJJVUFBSUVCZ2dLREE0UUVoUVdHQm9jSGlBaUpDWWFCQWdBRUFFYUJBZ0NFQU1hQkFnRUVBVWFCQWdHRUFjYUJBZ0lFQWthQkFnS0VBc2FCQWdNRUEwYUJBZ09FQThhQkFnUUVCRWFCQWdTRUJNYUJBZ1VFQlVhQkFnV0VCY2FCQWdZRUJrYUJBZ2FFQnNhQkFnY0VCMGFCQWdlRUI4YUJBZ2dFQ0VhQkFnaUVDTWFCQWdrRUNVYUJBZ21FQ2NxRkFBQ0JBWUlDZ3dPRUJJVUZoZ2FIQjRnSWlRbWoPd2F0Y2gtbmV4dC1mZWVk"), + visitor_data: Some("CgtIV0JjSUtDQm9LQSjUjpSZBg%3D%3D"), + endpoint: next, ), top_comments: Paginator( count: Some(2900), items: [], ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyJSIRIgtuRkRCeEJVZkU3NDAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), + endpoint: next, ), latest_comments: Paginator( count: Some(2900), items: [], ctoken: Some("Eg0SC25GREJ4QlVmRTc0GAYyOCIRIgtuRkRCeEJVZkU3NDABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_live.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_live.snap index d612ab7..84c663b 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_live.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_live.snap @@ -60,7 +60,7 @@ VideoDetails( height: 176, ), ], - verification: verified, + verification: Verified, subscriber_count: Some(5590000), ), view_count: 681, @@ -73,7 +73,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "SGP6Y0Pnhe4", title: "HOW IT WORKS: The International Space Station", length: Some(1738), @@ -89,7 +89,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_sXrcURB-Dh4az_FveeQ0Q", name: "DOCUMENTARY TUBE", avatar: [ @@ -99,16 +99,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 years ago"), - view_count: 90280310, + view_count: Some(90280310), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "ddZu_1Z3BAc", title: "NASA LIVE Stream From The ISS - Live Earth & Space Station Views & Audio", length: None, @@ -124,7 +126,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCakgsb0w7QB0VHdnCc-OVEA", name: "Space Videos", avatar: [ @@ -134,16 +136,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 80, + view_count: Some(80), is_live: true, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "oDXBMjg9HKU", title: "APOD: 2022-09-20 - Star Forming Region NGC 3582 without Stars (Narrated by Amy)", length: Some(124), @@ -159,7 +163,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCZepiiyNNbD2XL5sWnJBC_A", name: "Videotizer", avatar: [ @@ -169,16 +173,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("10 hours ago"), - view_count: 13, + view_count: Some(13), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "aU0vNvVHXa8", title: "🌎 LIVE ASTEROID Watch Tracking", length: None, @@ -194,7 +200,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCNrGOnduIS9BXIRmDcHasZA", name: "WorldCam", avatar: [ @@ -204,16 +210,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 23, + view_count: Some(23), is_live: true, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "6scCF_8YN70", title: "Dramatic footage of the tsunami that hit Japan", length: Some(133), @@ -229,7 +237,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCelk6aHijZq-GJBBB9YpReA", name: "BBC News عربي", avatar: [ @@ -239,16 +247,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 years ago"), - view_count: 118635723, + view_count: Some(118635723), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "n4IhCSMkADc", title: "EARTH FROM SPACE: Like You\'ve Never Seen Before", length: Some(766), @@ -264,7 +274,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_sXrcURB-Dh4az_FveeQ0Q", name: "DOCUMENTARY TUBE", avatar: [ @@ -274,16 +284,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("7 years ago"), - view_count: 11226061, + view_count: Some(11226061), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "bgbH4FAmAA0", title: "Winter Cab View from two of the most SCENIC RAILWAYS in the WORLD", length: None, @@ -299,7 +311,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCj-Xm8j6WBgKY8OG7s9r2vQ", name: "RailCowGirl", avatar: [ @@ -309,16 +321,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 108, + view_count: Some(108), is_live: true, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "uD4izuDMUQA", title: "TIMELAPSE OF THE FUTURE: A Journey to the End of Time (4K)", length: Some(1761), @@ -334,7 +348,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCR9sFzaG9Ia_kXJhfxtFMBA", name: "melodysheep", avatar: [ @@ -344,16 +358,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 85240979, + view_count: Some(85240979), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Z6DpPQ8QdLg", title: "Earthrise - Planet Earth Seen From The Moon - Real Time Journey Across The Lunar Surface", length: Some(241), @@ -369,7 +385,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCakgsb0w7QB0VHdnCc-OVEA", name: "Space Videos", avatar: [ @@ -379,16 +395,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 5405668, + view_count: Some(5405668), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "1hNF3Wuw0LI", title: "New York City Walk 24/7 Chat Stream", length: None, @@ -404,7 +422,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCRI_rCIV69l-PmT3oyD64kw", name: "Afraz Explores", avatar: [ @@ -414,16 +432,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 10, + view_count: Some(10), is_live: true, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "ZEyAs3NWH4A", title: "New: Mars In 4K", length: Some(609), @@ -439,7 +459,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCZvxw99l3xDC6BIHb8nJKGg", name: "ElderFox Documentaries", avatar: [ @@ -449,16 +469,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 61247221, + view_count: Some(61247221), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "NF4LQaWJRDg", title: "Hiroshima: Dropping the Bomb", length: Some(276), @@ -474,7 +496,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC2ccm1GajfSujz7T18d7cKA", name: "BBC Studios", avatar: [ @@ -484,16 +506,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("15 years ago"), - view_count: 36276575, + view_count: Some(36276575), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "qhOe_PxiNo8", title: "Imagens, Talvez Inéditas do Tsunami no Japão", length: Some(1202), @@ -509,7 +533,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCyrM5blUZAQoX9UvObdjtig", name: "Valdemar Gomes", avatar: [ @@ -519,16 +543,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 years ago"), - view_count: 12004917, + view_count: Some(12004917), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "zf3bDpdhUNc", title: "Astronauts accidentally lose a shield in space (GoPro 8K)", length: Some(566), @@ -544,7 +570,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCgP30k64HHZ0OY1QkEgS6Pw", name: "Waa Sop", avatar: [ @@ -554,16 +580,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 22901662, + view_count: Some(22901662), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "mJxsj51d-Pk", title: "Record breaking space jump - free fall faster than speed of sound - Red Bull Stratos.", length: Some(503), @@ -579,7 +607,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCBuDzfvztEJvNll_w1E9xFw", name: "The Random Theorizer", avatar: [ @@ -589,16 +617,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 42814880, + view_count: Some(42814880), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "fr_hXLDLc38", title: "Horizons mission - Soyuz: launch to orbit", length: Some(607), @@ -614,7 +644,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCIBaDdAbGlFDeS33shmlD0A", name: "European Space Agency, ESA", avatar: [ @@ -624,16 +654,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 9592134, + view_count: Some(9592134), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Jh-qzwdiAGY", title: "The Earth 4K - Incredible 4K / UHD Video of Earth From Space", length: Some(3594), @@ -649,7 +681,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCakgsb0w7QB0VHdnCc-OVEA", name: "Space Videos", avatar: [ @@ -659,16 +691,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 years ago"), - view_count: 4463605, + view_count: Some(4463605), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "EPyl1LgNtoQ", title: "The View from Space - Earth\'s Countries and Coastlines", length: Some(227), @@ -684,7 +718,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC1znqKFL3jeR0eoA0pHpzvw", name: "SpaceRip", avatar: [ @@ -694,16 +728,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("10 years ago"), - view_count: 14094460, + view_count: Some(14094460), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "7KXGZAEWzn0", title: "ORBIT - Journey Around Earth in Real Time // 4K Remastered", length: Some(5560), @@ -719,7 +755,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC28l88GMXXqZYfY0Ru9h50w", name: "Seán Doran", avatar: [ @@ -729,16 +765,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 9901163, + view_count: Some(9901163), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "KTUa9rG08go", title: "NASA Artemis I Mon Rocket Testing and Inspection LIVE From Launch Complex 39B", length: None, @@ -754,7 +792,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCDyeuRnxf_hxEyH1B7aoDQQ", name: "thebhp", avatar: [ @@ -764,26 +802,32 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: None, - view_count: 15, + view_count: Some(15), is_live: true, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILODZZTEZPb2c0R03AAQHIAQEYACrgBzJzNkw2d3poQlFyZUJRb0Q4ajRBQ2czQ1Bnb0k3b3VlbjdUTV9yRklDZ1B5UGdBS0RjSS1DZ2lIaU55ejlkLWI2M1VLQV9JLUFBb093ajRMQ0tXNTlNR2pwdkNhb0FFS0FfSS1BQW9Od2o0S0NLLTduYXJ2NXN1bWFRb0Q4ajRBQ2c3Q1Bnc0l2ZV9nLVBfQ3dPUHFBUW9EOGo0QUNnN0NQZ3NJdDRDUW1aS2hpTUdmQVFvRDhqNEFDZzNDUGdvSWpZQ1lnWVg4c1lOdUNnUHlQZ0FLRHNJLUN3aUFvckdHN3RtSW43Z0JDZ1B5UGdBS0RjSS1DZ2k0NmNINDBLZTYwR2NLQV9JLUFBb093ajRMQ0xLaHc5M1d1OUdKMWdFS0FfSS1BQW9Od2o0S0NJQ18ySnEzbHFDbVpBb0Q4ajRBQ2czQ1Bnb0l1SWlsckpyb2dxODBDZ1B5UGdBS0RzSS1Dd2lQN1lqano5X25pYW9CQ2dQeVBnQUtEc0ktQ3dqWG9ZVzc2ZUgyX3MwQkNnUHlQZ0FLRHNJLUN3ajU4ZmZxLVpHYnpwZ0JDZ1B5UGdBS0RjSS1DZ2pfNXEyR3k2djQzMzRLQV9JLUFBb053ajRLQ09hQWlMdncyZXFQSmdvRDhqNEFDZzNDUGdvSWhPMjJ3TXU2cWY0UUNnUHlQZ0FLRHNJLUN3ajluTnVJd016eDB1d0JDZ1B5UGdBS0RjSS1DZ2lLNU5PTjY5N0dtaWtLQV9JLUFBb2FtajhYQ2hWUGZEazRNek0xTXpjMU5ERTJOVGMzT0RnMk1UY0tHNW9fR0FvV1Qzd3hNekF5TXpnek9UY3hPREk0TXpVMU9EUTFNd29ibWo4WUNoWlBmREUxT0RVek5Ua3dPRGczTURVeE1qVTBOemcwQ2dQeVBnQUtBX0ktQUJJWEFBSUVCZ2dLREE0UUVoUVdHQm9jSGlBaUpDWW9MQzBhQkFnQUVBRWFCQWdDRUFNYUJBZ0VFQVVhQkFnR0VBY2FCQWdJRUFrYUJBZ0tFQXNhQkFnTUVBMGFCQWdPRUE4YUJBZ1FFQkVhQkFnU0VCTWFCQWdVRUJVYUJBZ1dFQmNhQkFnWUVCa2FCQWdhRUJzYUJBZ2NFQjBhQkFnZUVCOGFCQWdnRUNFYUJBZ2lFQ01hQkFna0VDVWFCQWdtRUNjYUJBZ29FQ2thQkFnb0VDb2FCQWdvRUNzYUJBZ3NFQ2thQkFnc0VDb2FCQWdzRUNzYUJBZ3RFQ2thQkFndEVDb2FCQWd0RUNzcUZ3QUNCQVlJQ2d3T0VCSVVGaGdhSEI0Z0lpUW1LQ3d0ag93YXRjaC1uZXh0LWZlZWQ%3D"), + visitor_data: Some("CgtnQS1WdzlNNkNCSSiSmKiZBg%3D%3D"), + endpoint: next, ), top_comments: Paginator( count: Some(0), items: [], ctoken: None, + endpoint: next, ), latest_comments: Paginator( count: Some(0), items: [], ctoken: None, + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_music.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_music.snap index 002b6c6..771a3bf 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_music.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_music.snap @@ -28,7 +28,7 @@ VideoDetails( height: 176, ), ], - verification: artist, + verification: Artist, subscriber_count: Some(33900), ), view_count: 20304, @@ -41,7 +41,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "XtV_HGppS6A", title: "Vergiss mein nicht", length: Some(263), @@ -57,7 +57,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -67,16 +67,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 30966, + view_count: Some(30966), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "BcqM8Qshx7U", title: "Kuliko Jana - Eine neue Zeit", length: Some(210), @@ -92,7 +94,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -102,16 +104,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 15269, + view_count: Some(15269), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "IUFUIgZOcow", title: "Silmaril - Schöner als die Sterne", length: Some(205), @@ -127,7 +131,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -137,16 +141,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 29035, + view_count: Some(29035), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "UtP9J88Jzg0", title: "Ruinen im Sand", length: Some(195), @@ -162,7 +168,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -172,16 +178,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 46009, + view_count: Some(46009), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "sg6j-zfUF_A", title: "Eldamar", length: Some(223), @@ -197,7 +205,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -207,16 +215,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 7405, + view_count: Some(7405), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "u2XCC1rKxV0", title: "Faolan", length: Some(256), @@ -232,7 +242,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -242,16 +252,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 19383, + view_count: Some(19383), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "oOBBBl3fywU", title: "Aeria - Vom Wind", length: Some(260), @@ -267,7 +279,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -277,16 +289,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 132472, + view_count: Some(132472), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "pI0Rancanz0", title: "Vergiss mein nicht", length: Some(263), @@ -302,7 +316,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -312,16 +326,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 367684, + view_count: Some(367684), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "DsviLYh1CB0", title: "Eldamar", length: Some(222), @@ -337,7 +353,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -347,16 +363,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 195958, + view_count: Some(195958), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Ctpe9kafn78", title: "So still mein Herz", length: Some(259), @@ -372,7 +390,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -382,16 +400,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 37702, + view_count: Some(37702), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "y252630WbIk", title: "Oonagh und Santiano: Vergiss mein nicht (mit lyrics)", length: Some(260), @@ -407,7 +427,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC8mcGChRS6Zm7pCSYbHeoVw", name: "princessZelda", avatar: [ @@ -417,16 +437,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("8 years ago"), - view_count: 103494, + view_count: Some(103494), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "YgUZtELr_jw", title: "Aulë und Yavanna", length: Some(216), @@ -442,7 +464,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -452,16 +474,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 19342, + view_count: Some(19342), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "ABKSs0aU4C0", title: "Gäa (Akustik Version)", length: Some(235), @@ -477,7 +501,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -487,16 +511,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 9392, + view_count: Some(9392), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "O0I3rJsHikA", title: "Orome (A-Class Remix)", length: Some(199), @@ -512,7 +538,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCVGvnqB-5znqPSbMGlhF4Pw", name: "Sentamusic", avatar: [ @@ -522,26 +548,32 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 22994, + view_count: Some(22994), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILWHVNMm9uTUd2VEnAAQHIAQEYACqsBzJzNkw2d3k2QlFxM0JRb0Q4ajRBQ2czQ1Bnb0lvSmVsMDhiajMtcGVDZ1B5UGdBS0o5SS1KQW9pVUV4aGFGSktXRWczV0ZCSWJWZE9TemMwVm5wM1NVWXljWFZYY1dSR1NWZDJjZ29EOGo0QUNpZlNQaVFLSWxCTU5pMTRZV3hIWVZaRmRYQjJlVGxHUVVoZlJYZ3pTRlYxWHpGaFVrRXlialFLQV9JLUFBb1MwajRQQ2cxU1JGaDFUVEp2YmsxSGRsUkpDZ1B5UGdBS0RjSS1DZ2kxajRmWmtKNmo1UVVLQV9JLUFBb053ajRLQ0l6bHViS2doTldnSVFvRDhqNEFDZzNDUGdvSWpaeW4tUHlrXy1sU0NnUHlQZ0FLRHNJLUN3andyOUMtc18tb2g3SUJDZ1B5UGdBS0o5SS1KQW9pVUV3d1dqSlNSVFZsY1dGWlRWRXhiRnBaZGtWalRrOW1UVmx3VFVvelkyTktRd29EOGo0QUNnN0NQZ3NJM1lxcjFyWEI4TEs3QVFvRDhqNEFDZzdDUGdzSWhaYl83dVdna1BDZ0FRb0Q4ajRBQ2c3Q1Bnc0l2YjdxdUtldHhNYWtBUW9EOGo0QUNnM0NQZ29JblpEVXc5akYtT1VPQ2dQeVBnQUtIOUktSEFvYVVrUkZUV1E0VUZwSmRqbERVSE4yZGtWRVltOWZjRlZFTkhjS0FfSS1BQW9Od2o0S0NMLV9fclRrM3BmdENnb0Q4ajRBQ2c3Q1Bnc0lpZG5aNkxmZG5iZkxBUW9EOGo0QUNnM0NQZ29JdlB5dmw4UzJ4b0ppQ2dQeVBnQUtETUktQ1FpdHdOTzB0TmFrQ1FvRDhqNEFDaWZTUGlRS0lsQk1NazR6TjFoVWQxaG5jRlZpYWxSemNXVjFNbEZFZVRCTGIyRnpkMDlZTVZvS0FfSS1BQW9Od2o0S0NNQ1VudGpKOVkyaE94SVVBQUlFQmdnS0RBNFFFaFFXR0JvY0hpQWlKQ1lhQkFnQUVBRWFCQWdDRUFNYUJBZ0VFQVVhQkFnR0VBY2FCQWdJRUFrYUJBZ0tFQXNhQkFnTUVBMGFCQWdPRUE4YUJBZ1FFQkVhQkFnU0VCTWFCQWdVRUJVYUJBZ1dFQmNhQkFnWUVCa2FCQWdhRUJzYUJBZ2NFQjBhQkFnZUVCOGFCQWdnRUNFYUJBZ2lFQ01hQkFna0VDVWFCQWdtRUNjcUZBQUNCQVlJQ2d3T0VCSVVGaGdhSEI0Z0lpUW1qD3dhdGNoLW5leHQtZmVlZA%3D%3D"), + visitor_data: Some("CgtzclhqZVpoajVhVSi76qeZBg%3D%3D"), + endpoint: next, ), top_comments: Paginator( count: Some(0), items: [], ctoken: None, + endpoint: next, ), latest_comments: Paginator( count: Some(0), items: [], ctoken: None, + endpoint: next, ), ) diff --git a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_mv.snap b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_mv.snap index 35c54fa..c22301a 100644 --- a/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_mv.snap +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_video_details_mv.snap @@ -91,7 +91,7 @@ VideoDetails( height: 176, ), ], - verification: verified, + verification: Verified, subscriber_count: Some(30900000), ), view_count: 232792465, @@ -104,7 +104,7 @@ VideoDetails( recommended: Paginator( count: None, items: [ - RecommendedVideo( + VideoItem( id: "4TWR90KJl84", title: "aespa 에스파 \'Next Level\' MV", length: Some(236), @@ -120,7 +120,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -130,16 +130,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 245412217, + view_count: Some(245412217), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "WPdWvnAAurg", title: "aespa 에스파 \'Savage\' MV", length: Some(259), @@ -155,7 +157,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -165,16 +167,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("11 months ago"), - view_count: 215292736, + view_count: Some(215292736), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "NoYKBAajoyo", title: "EVERGLOW (에버글로우) - DUN DUN MV", length: Some(209), @@ -190,7 +194,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC_pwIXKXNm5KGhdEVzmY60A", name: "Stone Music Entertainment", avatar: [ @@ -200,16 +204,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 264670229, + view_count: Some(264670229), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "KhTeiaCezwM", title: "[MV] MAMAMOO (마마무) - HIP", length: Some(211), @@ -225,7 +231,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCuhAUMLzJxlP1W7mEk0_6lA", name: "MAMAMOO", avatar: [ @@ -235,16 +241,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 354281319, + view_count: Some(354281319), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Jh4QFaPmdss", title: "(G)I-DLE - \'TOMBOY\' Official Music Video", length: Some(198), @@ -260,7 +268,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCritGVo7pLJLUS8wEu32vow", name: "(G)I-DLE (여자)아이들 (Official YouTube Channel)", avatar: [ @@ -270,16 +278,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 months ago"), - view_count: 167648677, + view_count: Some(167648677), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "CM4CkVFmTds", title: "TWICE \"I CAN\'T STOP ME\" M/V", length: Some(221), @@ -295,7 +305,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -305,16 +315,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 455437333, + view_count: Some(455437333), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "uR8Mrt1IpXg", title: "Red Velvet 레드벨벳 \'Psycho\' MV", length: Some(216), @@ -330,7 +342,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -340,16 +352,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 344730852, + view_count: Some(344730852), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "QslJYDX3o8s", title: "Red Velvet 레드벨벳 \'러시안 룰렛 (Russian Roulette)\' MV", length: Some(212), @@ -365,7 +379,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -375,16 +389,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 years ago"), - view_count: 238321583, + view_count: Some(238321583), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "EaswWiwMVs8", title: "Stray Kids \"소리꾼(Thunderous)\" M/V", length: Some(199), @@ -400,7 +416,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -410,16 +426,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 240527435, + view_count: Some(240527435), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "pNfTK39k55U", title: "ITZY \"달라달라(DALLA DALLA)\" M/V @ITZY", length: Some(227), @@ -435,7 +453,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCaO6TYtlC8U5ttz62hTrZgg", name: "JYP Entertainment", avatar: [ @@ -445,16 +463,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("3 years ago"), - view_count: 306144594, + view_count: Some(306144594), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "dYRITmpFbJ4", title: "aespa 에스파 \'Girls\' MV", length: Some(269), @@ -470,7 +490,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -480,16 +500,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 100128895, + view_count: Some(100128895), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "ioNng23DkIM", title: "BLACKPINK - \'How You Like That\' M/V", length: Some(184), @@ -505,7 +527,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -515,16 +537,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 1146631077, + view_count: Some(1146631077), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Ujb-gvqsoi0", title: "Red Velvet - IRENE & SEULGI \'Monster\' MV", length: Some(182), @@ -540,7 +564,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -550,16 +574,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 years ago"), - view_count: 126406160, + view_count: Some(126406160), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "bwmSjveL3Lc", title: "BLACKPINK - \'붐바야 (BOOMBAYAH)\' M/V", length: Some(244), @@ -575,7 +601,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCOmHUn--16B90oW2L6FRR3A", name: "BLACKPINK", avatar: [ @@ -585,16 +611,18 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("6 years ago"), - view_count: 1476093662, + view_count: Some(1476093662), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "6uJf2IT2Zh8", title: "Red Velvet 레드벨벳 \'피카부 (Peek-A-Boo)\' MV", length: Some(230), @@ -610,7 +638,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCEf_Bc-KVd7onSeifS3py9g", name: "SMTOWN", avatar: [ @@ -620,16 +648,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("4 years ago"), - view_count: 228968545, + view_count: Some(228968545), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "Y8JFxS1HlDo", title: "IVE 아이브 \'LOVE DIVE\' MV", length: Some(179), @@ -645,7 +675,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCYDmx2Sfpnaxg488yBpZIGg", name: "starshipTV", avatar: [ @@ -655,16 +685,18 @@ VideoDetails( height: 68, ), ], - verification: verified, + verification: Verified, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("5 months ago"), - view_count: 152292435, + view_count: Some(152292435), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "2FzSv66c7TQ", title: "A E S P A (에스파) ALL SONGS PLAYLIST 2022 | 에스파 노래 모음", length: Some(3441), @@ -680,7 +712,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UCK8S6QMrTk1G8TYQwIyDo-w", name: "𝙇𝙌 𝙆𝙋𝙊𝙋", avatar: [ @@ -690,16 +722,18 @@ VideoDetails( height: 68, ), ], - verification: none, + verification: None, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("2 months ago"), - view_count: 504562, + view_count: Some(504562), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), - RecommendedVideo( + VideoItem( id: "NU611fxGyPU", title: "aespa 에스파 \'Black Mamba\' Dance Practice", length: Some(175), @@ -715,7 +749,7 @@ VideoDetails( height: 188, ), ], - channel: ChannelTag( + channel: Some(ChannelTag( id: "UC9GtSLeksfK4yuJ_g1lgQbg", name: "aespa", avatar: [ @@ -725,26 +759,32 @@ VideoDetails( height: 68, ), ], - verification: artist, + verification: Artist, subscriber_count: None, - ), + )), publish_date: "[date]", publish_date_txt: Some("1 year ago"), - view_count: 34445393, + view_count: Some(34445393), is_live: false, is_short: false, + is_upcoming: false, + short_description: None, ), ], ctoken: Some("CBQSExILWmVlcnJudUxpNUXAAQHIAQEYACq7BjJzNkw2d3psQkFyaUJBb0Q4ajRBQ2c3Q1Bnc0l6cS1tbFBTLTVKcmhBUW9EOGo0QUNoTFNQZzhLRFZKRVdtVmxjbkp1ZFV4cE5VVUtBX0ktQUFvdzBqNHRDaXRTUkVOTVFVczFkWGxmYXpJM2RYVXRSWFJSWDJJMVZUSnlNalpFVGtSYVQyMU9jVWRrWTJOVlNVZFJDZ1B5UGdBS0RjSS1DZ2k0OVlLQTU5ZlYtMWdLQV9JLUFBb053ajRLQ0tyR2pyWEF3SUxETmdvRDhqNEFDZzNDUGdvSWc1NzdoSnJSdDRvcUNnUHlQZ0FLRGNJLUNnakw3Wm1mMm9LRWp5WUtBX0ktQUFvTndqNEtDTnVibVl1VjBvRG5DQW9EOGo0QUNnN0NQZ3NJLU1xaTZ1MlZ3NC01QVFvRDhqNEFDZzNDUGdvSXk4ZmVyNE9zMHVSQ0NnUHlQZ0FLRGNJLUNnalByYkhnb292TTFSRUtBX0ktQUFvT3dqNExDSlhQa191MzVmVHJwQUVLQV9JLUFBb053ajRLQ0o3WmxkTG1pWkxDZFFvRDhqNEFDZzdDUGdzSWc2R083cmJ3MmNHS0FRb0Q4ajRBQ2czQ1Bnb0lyY1N5MWFfUXY1dFNDZ1B5UGdBS0RjSS1DZ2kzdWEtODc5SGtoRzhLQV9JLUFBb093ajRMQ0pfTTJhZUktNWZ4NmdFS0FfSS1BQW9Od2o0S0NMcW9udXJTdUpIaFl3b0Q4ajRBQ2c3Q1Bnc0l0TnJ6OVByWHRLN1lBUW9EOGo0QUNnM0NQZ29JOVpHYjR0LTZyYWMxRWhRQUFnUUdDQW9NRGhBU0ZCWVlHaHdlSUNJa0pob0VDQUFRQVJvRUNBSVFBeG9FQ0FRUUJSb0VDQVlRQnhvRUNBZ1FDUm9FQ0FvUUN4b0VDQXdRRFJvRUNBNFFEeG9FQ0JBUUVSb0VDQklRRXhvRUNCUVFGUm9FQ0JZUUZ4b0VDQmdRR1JvRUNCb1FHeG9FQ0J3UUhSb0VDQjRRSHhvRUNDQVFJUm9FQ0NJUUl4b0VDQ1FRSlJvRUNDWVFKeW9VQUFJRUJnZ0tEQTRRRWhRV0dCb2NIaUFpSkNZag93YXRjaC1uZXh0LWZlZWQ%3D"), + visitor_data: Some("Cgtjemd0bDVxU1N1QSjRjpSZBg%3D%3D"), + endpoint: next, ), top_comments: Paginator( count: Some(705000), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyJSIRIgtaZWVycm51TGk1RTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"), + endpoint: next, ), latest_comments: Paginator( count: Some(705000), items: [], ctoken: Some("Eg0SC1plZXJybnVMaTVFGAYyOCIRIgtaZWVycm51TGk1RTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"), + endpoint: next, ), ) diff --git a/src/client/trends.rs b/src/client/trends.rs index 1d08adf..d98b23b 100644 --- a/src/client/trends.rs +++ b/src/client/trends.rs @@ -1,18 +1,15 @@ use crate::{ error::{Error, ExtractionError}, - model::{Paginator, SearchVideo}, + model::{Paginator, VideoItem}, param::Language, serializer::MapResult, util::TryRemove, }; -use super::{ - response::{self, TryFromWLang}, - ClientType, MapResponse, QBrowse, QContinuation, RustyPipeQuery, -}; +use super::{response, ClientType, MapResponse, QBrowse, RustyPipeQuery}; impl RustyPipeQuery { - pub async fn startpage(self) -> Result, Error> { + pub async fn startpage(self) -> Result, Error> { let context = self.get_context(ClientType::Desktop, true).await; let request_body = QBrowse { context, @@ -29,33 +26,7 @@ impl RustyPipeQuery { .await } - pub async fn startpage_continuation( - self, - ctoken: &str, - visitor_data: &str, - ) -> Result, Error> { - let mut context = self.get_context(ClientType::Desktop, true).await; - context.client.visitor_data = Some(visitor_data.to_owned()); - let request_body = QContinuation { - context, - continuation: ctoken, - }; - - self.execute_request::( - ClientType::Desktop, - "startpage_continuation", - ctoken, - "browse", - &request_body, - ) - .await - .map(|res| Paginator { - visitor_data: Some(visitor_data.to_owned()), - ..res - }) - } - - pub async fn trending(self) -> Result, Error> { + pub async fn trending(self) -> Result, Error> { let context = self.get_context(ClientType::Desktop, true).await; let request_body = QBrowse { context, @@ -73,20 +44,20 @@ impl RustyPipeQuery { } } -impl MapResponse> for response::Startpage { +impl MapResponse> for response::Startpage { fn map_response( self, _id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::Deobfuscator>, - ) -> Result>, ExtractionError> { + ) -> Result>, ExtractionError> { let mut contents = self.contents.two_column_browse_results_renderer.tabs; let grid = contents .try_swap_remove(0) .ok_or_else(|| ExtractionError::InvalidData("no contents".into()))? .tab_renderer .content - .rich_grid_renderer + .section_list_renderer .contents; Ok(map_startpage_videos( @@ -97,33 +68,15 @@ impl MapResponse> for response::Startpage { } } -impl MapResponse> for response::StartpageCont { +impl MapResponse> for response::Trending { fn map_response( self, _id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::Deobfuscator>, - ) -> Result>, ExtractionError> { - let mut received_actions = self.on_response_received_actions; - let items = received_actions - .try_swap_remove(0) - .ok_or_else(|| ExtractionError::InvalidData("no contents".into()))? - .append_continuation_items_action - .continuation_items; - - Ok(map_startpage_videos(items, lang, None)) - } -} - -impl MapResponse> for response::Trending { - fn map_response( - self, - _id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::Deobfuscator>, - ) -> Result>, ExtractionError> { + ) -> Result>, ExtractionError> { let mut contents = self.contents.two_column_browse_results_renderer.tabs; - let sections = contents + let items = contents .try_swap_remove(0) .ok_or_else(|| ExtractionError::InvalidData("no contents".into()))? .tab_renderer @@ -131,76 +84,33 @@ impl MapResponse> for response::Trending { .section_list_renderer .contents; - let mut items = Vec::new(); - let mut warnings = Vec::new(); + let mut mapper = response::YouTubeListMapper::::new(lang); + mapper.map_response(items); - for mut section in sections { - let shelf = section - .item_section_renderer - .contents - .try_swap_remove(0) - .and_then(|shelf| { - shelf - .shelf_renderer - .content - .expanded_shelf_contents_renderer - }); - - if let Some(mut shelf) = shelf { - warnings.append(&mut shelf.items.warnings); - - for item in shelf.items.c { - if let response::trends::TrendingListItem::VideoRenderer(video) = item { - match SearchVideo::from_w_lang(video, lang) { - Ok(video) => { - items.push(video); - } - Err(e) => { - warnings.push(e.to_string()); - } - } - } - } - } - } - - Ok(MapResult { c: items, warnings }) + Ok(MapResult { + c: mapper.items, + warnings: mapper.warnings, + }) } } fn map_startpage_videos( - videos: MapResult>, + videos: MapResult>, lang: Language, visitor_data: Option, -) -> MapResult> { - let mut warnings = videos.warnings; - let mut ctoken = None; - let items = videos - .c - .into_iter() - .filter_map(|item| match item { - response::VideoListItem::RichItemRenderer { - content: response::RichItem::VideoRenderer(video), - } => match SearchVideo::from_w_lang(video, lang) { - Ok(video) => Some(video), - Err(e) => { - warnings.push(e.to_string()); - None - } - }, - response::VideoListItem::ContinuationItemRenderer { - continuation_endpoint, - } => { - ctoken = Some(continuation_endpoint.continuation_command.token); - None - } - _ => None, - }) - .collect(); +) -> MapResult> { + let mut mapper = response::YouTubeListMapper::::new(lang); + mapper.map_response(videos); MapResult { - c: Paginator::new_with_vdata(None, items, ctoken, visitor_data), - warnings, + c: Paginator::new_ext( + None, + mapper.items, + mapper.ctoken, + visitor_data, + crate::param::ContinuationEndpoint::Browse, + ), + warnings: mapper.warnings, } } @@ -210,7 +120,7 @@ mod tests { use crate::{ client::{response, MapResponse}, - model::{Paginator, SearchVideo}, + model::{Paginator, VideoItem}, param::Language, serializer::MapResult, }; @@ -223,7 +133,7 @@ mod tests { let startpage: response::Startpage = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = + let map_res: MapResult> = startpage.map_response("", Language::En, None).unwrap(); assert!( @@ -237,28 +147,6 @@ mod tests { }); } - #[test] - fn map_startpage_cont() { - let filename = "testfiles/trends/startpage_cont.json"; - let json_path = Path::new(&filename); - let json_file = File::open(json_path).unwrap(); - - let startpage: response::StartpageCont = - serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = - startpage.map_response("", Language::En, None).unwrap(); - - assert!( - map_res.warnings.is_empty(), - "deserialization/mapping warnings: {:?}", - map_res.warnings - ); - - insta::assert_ron_snapshot!("map_startpage_cont", map_res.c, { - ".items[].publish_date" => "[date]", - }); - } - #[test] fn map_trending() { let filename = "testfiles/trends/trending.json"; @@ -267,7 +155,7 @@ mod tests { let startpage: response::Trending = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = + let map_res: MapResult> = startpage.map_response("", Language::En, None).unwrap(); assert!( diff --git a/src/client/video_details.rs b/src/client/video_details.rs index e317328..d515f3e 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -2,7 +2,7 @@ use serde::Serialize; use crate::{ error::{Error, ExtractionError}, - model::{ChannelTag, Chapter, Comment, Paginator, RecommendedVideo, VideoDetails}, + model::{ChannelTag, Chapter, Comment, Paginator, VideoDetails, VideoItem}, param::Language, serializer::MapResult, timeago, @@ -10,7 +10,7 @@ use crate::{ }; use super::{ - response::{self, IconType, TryFromWLang}, + response::{self, IconType}, ClientType, MapResponse, QContinuation, RustyPipeQuery, YTContext, }; @@ -45,28 +45,13 @@ impl RustyPipeQuery { .await } - pub async fn video_recommendations( + pub async fn video_comments( self, ctoken: &str, - ) -> Result, Error> { - let context = self.get_context(ClientType::Desktop, true).await; - let request_body = QContinuation { - context, - continuation: ctoken, - }; - - self.execute_request::( - ClientType::Desktop, - "video_recommendations", - ctoken, - "next", - &request_body, - ) - .await - } - - pub async fn video_comments(self, ctoken: &str) -> Result, Error> { - let context = self.get_context(ClientType::Desktop, true).await; + visitor_data: Option<&str>, + ) -> Result, Error> { + let mut context = self.get_context(ClientType::Desktop, true).await; + context.client.visitor_data = visitor_data.map(str::to_owned); let request_body = QContinuation { context, continuation: ctoken, @@ -254,7 +239,12 @@ impl MapResponse for response::VideoDetails { .secondary_results .and_then(|sr| { sr.secondary_results.results.map(|r| { - let mut res = map_recommendations(r, sr.secondary_results.continuations, lang); + let mut res = map_recommendations( + r, + sr.secondary_results.continuations, + self.response_context.visitor_data, + lang, + ); warnings.append(&mut res.warnings); res.c }) @@ -329,32 +319,26 @@ impl MapResponse for response::VideoDetails { is_ccommons, chapters, recommended, - top_comments: Paginator::new(comment_count, Vec::new(), comment_ctoken), - latest_comments: Paginator::new(comment_count, Vec::new(), latest_comments_ctoken), + top_comments: Paginator::new_ext( + comment_count, + Vec::new(), + comment_ctoken, + None, + crate::param::ContinuationEndpoint::Next, + ), + latest_comments: Paginator::new_ext( + comment_count, + Vec::new(), + latest_comments_ctoken, + None, + crate::param::ContinuationEndpoint::Next, + ), }, warnings, }) } } -impl MapResponse> for response::VideoRecommendations { - fn map_response( - self, - _id: &str, - lang: Language, - _deobf: Option<&crate::deobfuscate::Deobfuscator>, - ) -> Result>, ExtractionError> { - let mut endpoints = self.on_response_received_endpoints; - let cont = endpoints.try_swap_remove(0).ok_or(ExtractionError::Retry)?; - - Ok(map_recommendations( - cont.append_continuation_items_action.continuation_items, - None, - lang, - )) - } -} - impl MapResponse> for response::VideoComments { fn map_response( self, @@ -362,9 +346,7 @@ impl MapResponse> for response::VideoComments { lang: Language, _deobf: Option<&crate::deobfuscate::Deobfuscator>, ) -> Result>, ExtractionError> { - let received_endpoints = self - .on_response_received_endpoints - .ok_or(ExtractionError::Retry)?; + let received_endpoints = self.on_response_received_endpoints; let mut warnings = received_endpoints.warnings; let mut comments = Vec::new(); @@ -419,47 +401,29 @@ impl MapResponse> for response::VideoComments { } fn map_recommendations( - r: MapResult>, + r: MapResult>, continuations: Option>, + visitor_data: Option, lang: Language, -) -> MapResult> { - let mut warnings = r.warnings; - let mut ctoken = None; - - let mut items = Vec::new(); - - r.c.into_iter().for_each(|item| match item { - response::VideoListItem::CompactVideoRenderer(video) => { - match RecommendedVideo::from_w_lang(video, lang) { - Ok(video) => items.push(video), - Err(e) => warnings.push(e.to_string()), - } - } - response::VideoListItem::ItemSectionRenderer { contents } => { - let mut x = map_recommendations(contents, None, lang); - items.append(&mut x.c.items); - warnings.append(&mut x.warnings); - if let Some(ct) = x.c.ctoken { - ctoken = Some(ct) - } - } - response::VideoListItem::ContinuationItemRenderer { - continuation_endpoint, - } => { - ctoken = Some(continuation_endpoint.continuation_command.token); - } - _ => {} - }); +) -> MapResult> { + let mut mapper = response::YouTubeListMapper::::new(lang); + mapper.map_response(r); if let Some(continuations) = continuations { continuations.into_iter().for_each(|c| { - ctoken = Some(c.next_continuation_data.continuation); + mapper.ctoken = Some(c.next_continuation_data.continuation); }) }; MapResult { - c: Paginator::new(None, items, ctoken), - warnings, + c: Paginator::new_ext( + None, + mapper.items, + mapper.ctoken, + visitor_data, + crate::param::ContinuationEndpoint::Next, + ), + warnings: mapper.warnings, } } @@ -600,42 +564,6 @@ mod tests { )) } - #[test] - fn t_map_recommendations() { - let json_path = Path::new("testfiles/video_details/recommendations.json"); - let json_file = File::open(json_path).unwrap(); - - let recommendations: response::VideoRecommendations = - serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res = recommendations - .map_response("", Language::En, None) - .unwrap(); - - assert!( - map_res.warnings.is_empty(), - "deserialization/mapping warnings: {:?}", - map_res.warnings - ); - insta::assert_ron_snapshot!("map_recommendations", map_res.c, { - ".items[].publish_date" => "[date]", - }); - } - - #[test] - fn map_recommendations_empty() { - let filename = format!("testfiles/video_details/recommendations_empty.json"); - let json_path = Path::new(&filename); - let json_file = File::open(json_path).unwrap(); - - let recommendations: response::VideoRecommendations = - serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let err = recommendations - .map_response("", Language::En, None) - .unwrap_err(); - - assert!(matches!(err, crate::error::ExtractionError::Retry)); - } - #[rstest] #[case::top("top")] #[case::latest("latest")] diff --git a/src/error.rs b/src/error.rs index 212c144..23cb14a 100644 --- a/src/error.rs +++ b/src/error.rs @@ -83,6 +83,4 @@ pub enum ExtractionError { WrongResult(String), #[error("Warnings during deserialization/mapping")] DeserializationWarnings, - #[error("Got no data from YouTube, attempt retry")] - Retry, } diff --git a/src/model/mod.rs b/src/model/mod.rs index b78c412..074a80d 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -530,7 +530,7 @@ pub struct VideoDetails { /// Recommended videos /// /// Note: Recommendations are not available for age-restricted videos - pub recommended: Paginator, + pub recommended: Paginator, /// Paginator to fetch comments (most liked first) /// /// Is initially empty. @@ -556,42 +556,6 @@ pub struct Chapter { pub thumbnail: Vec, } -/* -@RECOMMENDATIONS -*/ - -/// YouTube video fetched from the recommendations next to a video -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] -#[non_exhaustive] -pub struct RecommendedVideo { - /// Unique YouTube video ID - pub id: String, - /// Video title - pub title: String, - /// Video length in seconds. - /// - /// Is [`None`] for livestreams. - pub length: Option, - /// Video thumbnail - pub thumbnail: Vec, - /// Channel of the video - pub channel: ChannelTag, - /// Video publishing date. - /// - /// [`None`] if the date could not be parsed. - pub publish_date: Option>, - /// Textual video publish date (e.g. `11 months ago`, depends on language) - /// - /// Is [`None`] for livestreams. - pub publish_date_txt: Option, - /// View count - pub view_count: u64, - /// Is the video an active livestream? - pub is_live: bool, - /// Is the video a YouTube Short video (vertical and <60s)? - pub is_short: bool, -} - /// Channel information attached to a video or comment #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] @@ -618,7 +582,6 @@ pub struct ChannelTag { /// Verification status of a channel #[derive(Default, Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Hash)] -#[serde(rename_all = "snake_case")] #[non_exhaustive] pub enum Verification { #[default] @@ -692,6 +655,8 @@ pub struct Channel { pub subscriber_count: Option, /// Channel avatar / profile picture pub avatar: Vec, + /// Channel verification mark + pub verification: Verification, /// Channel description text pub description: String, /// List of words to describe the topic of the channel @@ -709,55 +674,6 @@ pub struct Channel { pub content: T, } -/// Video fetched from a YouTube channel -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] -#[non_exhaustive] -pub struct ChannelVideo { - /// Unique YouTube video ID - pub id: String, - /// Video title - pub title: String, - /// Video length in seconds. - /// - /// Is [`None`] for livestreams. - pub length: Option, - /// Video thumbnail - pub thumbnail: Vec, - /// Video publishing date. - /// - /// [`None`] if the date could not be parsed. - /// May be in the future for upcoming videos - pub publish_date: Option>, - /// Textual video publish date (e.g. `11 months ago`, depends on language) - /// - /// Is [`None`] for livestreams and upcoming videos. - pub publish_date_txt: Option, - /// Number of views / current viewers in case of a livestream. - /// - /// [`None`] if it could not be extracted. - pub view_count: u64, - /// Is the video an active livestream? - pub is_live: bool, - /// Is the video a YouTube Short video (vertical and <60s)? - pub is_short: bool, - /// Is the video announced, but not released yet (YouTube Premiere)? - pub is_upcoming: bool, -} - -/// Playlist fetched from a YouTube channel -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] -#[non_exhaustive] -pub struct ChannelPlaylist { - /// Unique YouTube Playlist-ID (e.g. `PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ`) - pub id: String, - /// Playlist name - pub name: String, - /// Playlist thumbnail - pub thumbnail: Vec, - /// Number of playlist videos - pub video_count: Option, -} - /// Additional channel metadata fetched from the "About" tab. #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] @@ -808,23 +724,34 @@ pub struct ChannelRssVideo { pub like_count: u64, } +/// YouTube search result #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] pub struct SearchResult { - pub items: Paginator, + /// Search result items + pub items: Paginator, + /// Corrected search query + /// + /// If the search term containes a typo, YouTube instead searches + /// for the corrected search term and displays it on top of the + /// search results page. pub corrected_query: Option, } +/// YouTube item (Video/Channel/Playlist) #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] -pub enum SearchItem { - Video(SearchVideo), - Playlist(SearchPlaylist), - Channel(SearchChannel), +pub enum YouTubeItem { + /// YouTube video item + Video(VideoItem), + /// YouTube playlist item + Playlist(PlaylistItem), + /// YouTube channel item + Channel(ChannelItem), } -/// YouTube video from the search results +/// YouTube video list item #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] -pub struct SearchVideo { +pub struct VideoItem { /// Unique YouTube video ID pub id: String, /// Video title @@ -836,7 +763,7 @@ pub struct SearchVideo { /// Video thumbnail pub thumbnail: Vec, /// Channel of the video - pub channel: ChannelTag, + pub channel: Option, /// Video publishing date. /// /// [`None`] if the date could not be parsed. @@ -848,43 +775,21 @@ pub struct SearchVideo { /// View count /// /// [`None`] if it could not be extracted. - pub view_count: u64, + pub view_count: Option, /// Is the video an active livestream? pub is_live: bool, /// Is the video a YouTube Short video (vertical and <60s)? pub is_short: bool, + /// Is the video announced, but not released yet (YouTube Premiere)? + pub is_upcoming: bool, /// Abbreviated video description - pub short_description: String, + pub short_description: Option, } -/// Playlist from the search results +/// YouTube channel list item #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] -pub struct SearchPlaylist { - /// Unique YouTube Playlist-ID (e.g. `PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ`) - pub id: String, - /// Playlist name - pub name: String, - /// Playlist thumbnail - pub thumbnail: Vec, - /// Number of playlist videos - pub video_count: u64, - /// First 2 videos - pub first_videos: Vec, -} - -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] -#[non_exhaustive] -pub struct SearchPlaylistVideo { - pub id: String, - pub title: String, - pub length: Option, -} - -/// Channel from the search results -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] -#[non_exhaustive] -pub struct SearchChannel { +pub struct ChannelItem { /// Unique YouTube channel ID pub id: String, /// Channel name @@ -902,3 +807,52 @@ pub struct SearchChannel { /// Abbreviated channel description pub short_description: String, } + +/// YouTube playlist list item +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +#[non_exhaustive] +pub struct PlaylistItem { + /// Unique YouTube Playlist-ID (e.g. `PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ`) + pub id: String, + /// Playlist name + pub name: String, + /// Playlist thumbnail + pub thumbnail: Vec, + /// Channel of the playlist + pub channel: Option, + /// Number of playlist videos + pub video_count: Option, +} + +impl TryFrom for VideoItem { + type Error = (); + + fn try_from(value: YouTubeItem) -> Result { + match value { + YouTubeItem::Video(video) => Ok(video), + _ => Err(()), + } + } +} + +impl TryFrom for PlaylistItem { + type Error = (); + + fn try_from(value: YouTubeItem) -> Result { + match value { + YouTubeItem::Playlist(playlist) => Ok(playlist), + _ => Err(()), + } + } +} + +impl TryFrom for ChannelItem { + type Error = (); + + fn try_from(value: YouTubeItem) -> Result { + match value { + YouTubeItem::Channel(channel) => Ok(channel), + _ => Err(()), + } + } +} diff --git a/src/model/paginator.rs b/src/model/paginator.rs index 669673e..366541a 100644 --- a/src/model/paginator.rs +++ b/src/model/paginator.rs @@ -2,6 +2,8 @@ use std::convert::TryInto; use serde::{Deserialize, Serialize}; +use crate::param::ContinuationEndpoint; + /// Wrapper around progressively fetched items /// /// The paginator is a wrapper around a list of items that are fetched @@ -31,6 +33,8 @@ pub struct Paginator { /// YouTube visitor data. Required for fetching the startpage #[serde(skip_serializing_if = "Option::is_none")] pub visitor_data: Option, + /// YouTube API endpoint to fetch continuations from + pub endpoint: ContinuationEndpoint, } impl Default for Paginator { @@ -40,20 +44,22 @@ impl Default for Paginator { items: Vec::new(), ctoken: None, visitor_data: None, + endpoint: ContinuationEndpoint::Browse, } } } impl Paginator { pub(crate) fn new(count: Option, items: Vec, ctoken: Option) -> Self { - Self::new_with_vdata(count, items, ctoken, None) + Self::new_ext(count, items, ctoken, None, ContinuationEndpoint::Browse) } - pub(crate) fn new_with_vdata( + pub(crate) fn new_ext( count: Option, items: Vec, ctoken: Option, visitor_data: Option, + endpoint: ContinuationEndpoint, ) -> Self { Self { count: match ctoken { @@ -63,6 +69,7 @@ impl Paginator { items, ctoken, visitor_data, + endpoint, } } diff --git a/src/param/mod.rs b/src/param/mod.rs index a339cfa..e5b69f3 100644 --- a/src/param/mod.rs +++ b/src/param/mod.rs @@ -4,6 +4,7 @@ pub mod locale; pub mod search_filter; pub use locale::{Country, Language}; +use serde::{Deserialize, Serialize}; pub use stream_filter::StreamFilter; /// Channel video sort order @@ -18,3 +19,22 @@ pub enum ChannelOrder { /// Output the most viewed videos first Popular, } + +/// YouTube API endpoint to fetch continuations from +#[derive(Debug, Copy, Clone, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "lowercase")] +pub enum ContinuationEndpoint { + Browse, + Search, + Next, +} + +impl ContinuationEndpoint { + pub(crate) fn as_str(self) -> &'static str { + match self { + ContinuationEndpoint::Browse => "browse", + ContinuationEndpoint::Search => "search", + ContinuationEndpoint::Next => "next", + } + } +} diff --git a/src/serializer/text.rs b/src/serializer/text.rs index a09b977..5833e1c 100644 --- a/src/serializer/text.rs +++ b/src/serializer/text.rs @@ -42,7 +42,7 @@ use crate::{ #[serde_as] #[derive(Clone, Debug, Deserialize)] #[serde(untagged)] -pub enum Text { +pub(crate) enum Text { Simple { #[serde(alias = "simpleText")] text: String, @@ -86,10 +86,10 @@ impl<'de> DeserializeAs<'de, Vec> for Text { /// /// Texts with links are mapped as a list of text components. #[derive(Default, Debug, Clone)] -pub struct TextComponents(pub Vec); +pub(crate) struct TextComponents(pub Vec); #[derive(Debug, Clone)] -pub enum TextComponent { +pub(crate) enum TextComponent { Video { text: String, video_id: String, @@ -130,7 +130,7 @@ struct RichTextRun { /// the links. #[derive(Deserialize)] #[serde(rename_all = "camelCase")] -pub struct AttributedText { +pub(crate) struct AttributedText { content: String, #[serde(default)] command_runs: Vec, @@ -345,7 +345,7 @@ impl From for crate::model::richtext::RichText { #[derive(Deserialize)] #[serde(rename_all = "camelCase")] -pub struct AccessibilityText { +pub(crate) struct AccessibilityText { accessibility_data: AccessibilityData, } diff --git a/testfiles/playlist/playlist_cont.json b/testfiles/playlist/playlist_cont.json new file mode 100644 index 0000000..42f917d --- /dev/null +++ b/testfiles/playlist/playlist_cont.json @@ -0,0 +1,20489 @@ +{ + "alerts": [ + { + "alertWithButtonRenderer": { + "dismissButton": { + "buttonRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Dismiss" + } + }, + "icon": { + "iconType": "CLOSE" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "trackingParams": "CNQBEPBbIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + }, + "text": { + "simpleText": "Unavailable videos are hidden" + }, + "type": "INFO" + } + } + ], + "contents": { + "twoColumnBrowseResultsRenderer": { + "tabs": [ + { + "tabRenderer": { + "selected": true, + "trackingParams": "CNUBEPCTARhuIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ] + } + }, + "metadata": { + "playlistMetadataRenderer": { + "androidAppindexingLink": "android-app://com.google.android.youtube/http/www.youtube.com/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "iosAppindexingLink": "ios-app://544007664/vnd.youtube/www.youtube.com/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "title": "Die schönsten deutschen Lieder | Beliebteste Lieder | Beste Deutsche Musik 2022" + } + }, + "microformat": { + "microformatDataRenderer": { + "androidPackage": "com.google.android.youtube", + "appName": "YouTube", + "description": "", + "iosAppArguments": "http://www.youtube.com/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "iosAppStoreId": "544007664", + "linkAlternates": [ + { + "hrefUrl": "http://www.youtube.com/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ" + }, + { + "hrefUrl": "android-app://com.google.android.youtube/http/youtube.comhttp://www.youtube.com/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ" + }, + { + "hrefUrl": "ios-app://544007664/http/youtube.comhttp://www.youtube.com/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ" + } + ], + "noindex": false, + "ogType": "website", + "schemaDotOrgType": "http://schema.org/WebPage", + "siteName": "YouTube", + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDyvpFGBDtaeOjr_CgauQuykb-2vw&days_since_epoch=19282", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDoQAKVizNWaDGfCYZWjwsIdO0LHg&days_since_epoch=19282", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLD-mpSGdw3SsUFVGhXq6JZ98_aQTA&days_since_epoch=19282", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCIsW1YLB30e0ac-Ag09Rr22F7MAA&days_since_epoch=19282", + "width": 336 + } + ] + }, + "title": "Die schönsten deutschen Lieder | Beliebteste Lieder | Beste Deutsche Musik 2022", + "twitterCardType": "summary", + "twitterSiteHandle": "@YouTube", + "unlisted": false, + "urlApplinksAndroid": "http://www.youtube.com/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&feature=applinks", + "urlApplinksIos": "http://www.youtube.com/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&feature=applinks", + "urlApplinksWeb": "http://www.youtube.com/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&feature=applinks", + "urlCanonical": "http://www.youtube.com/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "urlTwitterAndroid": "http://www.youtube.com/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&feature=twitter-deep-link", + "urlTwitterIos": "http://www.youtube.com/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&feature=twitter-deep-link" + } + }, + "onResponseReceivedActions": [ + { + "appendContinuationItemsAction": { + "continuationItems": [ + { + "playlistVideoRenderer": { + "index": { + "simpleText": "101" + }, + "isPlayable": true, + "lengthSeconds": "212", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 32 seconds" + } + }, + "simpleText": "3:32" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "zMPIobcM2j0" + ] + } + }, + "openMiniplayer": true, + "videoId": "zMPIobcM2j0", + "videoIds": [ + "zMPIobcM2j0" + ] + }, + "clickTrackingParams": "CNMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CNIBEMY0GAIiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CNIBEMY0GAIiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=zMPIobcM2j0&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=101", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 100, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "zMPIobcM2j0", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeened.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=ccc3c8a1b70cda3d&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCDLPHv0SrvyUzct8UYQ9R_g", + "canonicalBaseUrl": "/c/KMNGANG" + }, + "clickTrackingParams": "CNIBEMY0GAIiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/KMNGANG", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "KMNGANG" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCUVzgKNBFY6In3YbZuWpZ60oilnQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBhueuErwTtigonAw2laaQQUAT4NA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAdl-Q1gh9d1d-usngNO-zMvUvx_g", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAoVRJ3fjDaqHcZRTZZFjjw3h4d9w", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 32 seconds" + } + }, + "simpleText": "3:32" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "ZUNA feat. AZET & NOIZY - NUMMER 1 prod. by DJ A-BOOM by KMNGANG 5 years ago 3 minutes, 32 seconds" + } + }, + "runs": [ + { + "text": "ZUNA feat. AZET & NOIZY - NUMMER 1 prod. by DJ A-BOOM" + } + ] + }, + "trackingParams": "CNIBEMY0GAIiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "zMPIobcM2j0" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "102" + }, + "isPlayable": true, + "lengthSeconds": "230", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 50 seconds" + } + }, + "simpleText": "3:50" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "f9g6NCHQrcE" + ] + } + }, + "openMiniplayer": true, + "videoId": "f9g6NCHQrcE", + "videoIds": [ + "f9g6NCHQrcE" + ] + }, + "clickTrackingParams": "CNEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CNABEMY0GAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CNABEMY0GAMiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=f9g6NCHQrcE&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=102", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 101, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "f9g6NCHQrcE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelnes.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=7fd83a3421d0adc1&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCDLPHv0SrvyUzct8UYQ9R_g", + "canonicalBaseUrl": "/c/KMNGANG" + }, + "clickTrackingParams": "CNABEMY0GAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/KMNGANG", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "KMNGANG" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/f9g6NCHQrcE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAMGepmuIe_XAharqN6EnCXvp0xYw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/f9g6NCHQrcE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBzDe7LTk3WvQxRujhPMwEiXBz_Vw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/f9g6NCHQrcE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDqxi62N_SvOBaQzFIdn_cQ454UiQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/f9g6NCHQrcE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA7ZI4qgstve9cKsJ0WiVaDmPv3Mg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 50 seconds" + } + }, + "simpleText": "3:50" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "AZET ft. ZUNA & NOIZY - KRIMINELL (prod. by DJ A-BOOM) by KMNGANG 4 years ago 3 minutes, 50 seconds" + } + }, + "runs": [ + { + "text": "AZET ft. ZUNA & NOIZY - KRIMINELL (prod. by DJ A-BOOM)" + } + ] + }, + "trackingParams": "CNABEMY0GAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "f9g6NCHQrcE" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "103" + }, + "isPlayable": true, + "lengthSeconds": "227", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 47 seconds" + } + }, + "simpleText": "3:47" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CM8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "CAVfEwrwT_o" + ] + } + }, + "openMiniplayer": true, + "videoId": "CAVfEwrwT_o", + "videoIds": [ + "CAVfEwrwT_o" + ] + }, + "clickTrackingParams": "CM8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CM8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CM4BEMY0GAQiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CM4BEMY0GAQiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=CAVfEwrwT_o&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=103", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 102, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "CAVfEwrwT_o", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=08055f130af04ffa&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCDbDbm3v-MAqL4IPR2wIA9A", + "canonicalBaseUrl": "/c/hiphopde" + }, + "clickTrackingParams": "CM4BEMY0GAQiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/hiphopde", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Hiphop.de" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/CAVfEwrwT_o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBUrGnudhiLRS7_j5qb_973rHrTMw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/CAVfEwrwT_o/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBNx43hsr8m7s-kUXox81a0WKLJig", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/CAVfEwrwT_o/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBQzL61jNNY6tkHfXmkTaGqOXWa7Q", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/CAVfEwrwT_o/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAwupB3QsRnYZFXDKcVcp3hlhHVYQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 47 seconds" + } + }, + "simpleText": "3:47" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Rooz x MoTrip - Immer Wieder (eng: Again and Again) (prod SOTT) by Hiphop.de 4 years ago 3 minutes, 47 seconds" + } + }, + "runs": [ + { + "text": "Rooz x MoTrip - Immer Wieder (eng: Again and Again) (prod SOTT)" + } + ] + }, + "trackingParams": "CM4BEMY0GAQiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "CAVfEwrwT_o" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "104" + }, + "isPlayable": true, + "lengthSeconds": "270", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 30 seconds" + } + }, + "simpleText": "4:30" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CM0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "VUr9JZQ8F2g" + ] + } + }, + "openMiniplayer": true, + "videoId": "VUr9JZQ8F2g", + "videoIds": [ + "VUr9JZQ8F2g" + ] + }, + "clickTrackingParams": "CM0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CM0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CMwBEMY0GAUiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMwBEMY0GAUiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=VUr9JZQ8F2g&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=104", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 103, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "VUr9JZQ8F2g", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeenle.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=554afd25943c1768&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCIgCb1dYprH140Ds0mgeAUA", + "canonicalBaseUrl": "/channel/UCIgCb1dYprH140Ds0mgeAUA" + }, + "clickTrackingParams": "CMwBEMY0GAUiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCIgCb1dYprH140Ds0mgeAUA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Kontra K" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/VUr9JZQ8F2g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB_wUNlasFg6HhHNUdiLvaGljPqRg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/VUr9JZQ8F2g/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA3JQ6GNQR_l-56Dp2CZkWXaz_6Ww", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/VUr9JZQ8F2g/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDw44Lg4YcD8fLqmeuJf-RbpWyf1A", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/VUr9JZQ8F2g/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC2LA5SRL1aXCK2c0LxT2VfWesYbw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 30 seconds" + } + }, + "simpleText": "4:30" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Kontra K - Zwischen Himmel & Hölle (Official Video) by Kontra K 4 years ago 4 minutes, 30 seconds" + } + }, + "runs": [ + { + "text": "Kontra K - Zwischen Himmel & Hölle (Official Video)" + } + ] + }, + "trackingParams": "CMwBEMY0GAUiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "VUr9JZQ8F2g" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "105" + }, + "isPlayable": true, + "lengthSeconds": "220", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 40 seconds" + } + }, + "simpleText": "3:40" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "XQat6rNNbdQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "XQat6rNNbdQ", + "videoIds": [ + "XQat6rNNbdQ" + ] + }, + "clickTrackingParams": "CMsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CMoBEMY0GAYiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMoBEMY0GAYiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=XQat6rNNbdQ&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=105", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 104, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "XQat6rNNbdQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jeened.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=5d06adeab34d6dd4&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCDLPHv0SrvyUzct8UYQ9R_g", + "canonicalBaseUrl": "/c/KMNGANG" + }, + "clickTrackingParams": "CMoBEMY0GAYiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/KMNGANG", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "KMNGANG" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/XQat6rNNbdQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLALH-TVmccxyBnh-y3ShIBrdDw93g", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/XQat6rNNbdQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDosyiHl_Py1cxk6OewlrR2nWk2YQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/XQat6rNNbdQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBN5itLmYVnL5mRVeONPSSfDdf9Lg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/XQat6rNNbdQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD0BPkYhJ2donQ3_zbZOm0jXliLYA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 40 seconds" + } + }, + "simpleText": "3:40" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "ZUNA - AYE prod. by LUCRY #KMNSTREET VOL. 7 by KMNGANG 4 years ago 3 minutes, 40 seconds" + } + }, + "runs": [ + { + "text": "ZUNA - AYE prod. by LUCRY #KMNSTREET VOL. 7" + } + ] + }, + "trackingParams": "CMoBEMY0GAYiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "XQat6rNNbdQ" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "106" + }, + "isPlayable": true, + "lengthSeconds": "220", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 40 seconds" + } + }, + "simpleText": "3:40" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "EQyU6fGDn0c" + ] + } + }, + "openMiniplayer": true, + "videoId": "EQyU6fGDn0c", + "videoIds": [ + "EQyU6fGDn0c" + ] + }, + "clickTrackingParams": "CMkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CMgBEMY0GAciEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMgBEMY0GAciEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=EQyU6fGDn0c&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=106", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 105, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "EQyU6fGDn0c", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jelnez.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=110c94e9f1839f47&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChqcJ_MhP9a4bXy1jQ0QPzQ", + "canonicalBaseUrl": "/channel/UChqcJ_MhP9a4bXy1jQ0QPzQ" + }, + "clickTrackingParams": "CMgBEMY0GAciEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChqcJ_MhP9a4bXy1jQ0QPzQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "RAF Camora" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/EQyU6fGDn0c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCZtiHGorHDDYBp-sPHB2MACq4XJg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/EQyU6fGDn0c/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAGMv_ScVyEbt7zhNB24dn4mJuhqA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/EQyU6fGDn0c/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLChqv1NE3-yiPhFMa9EwVd8gc9x4g", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/EQyU6fGDn0c/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBZSe5Cz0S4LG5mA9tsQNg-dwY4Qg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 40 seconds" + } + }, + "simpleText": "3:40" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "RAF Camora - CORLEONE (prod. by X-Plosive,The Cratez & RAF Camora) by RAF Camora 4 years ago 3 minutes, 40 seconds" + } + }, + "runs": [ + { + "text": "RAF Camora - CORLEONE (prod. by X-Plosive,The Cratez & RAF Camora)" + } + ] + }, + "trackingParams": "CMgBEMY0GAciEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "EQyU6fGDn0c" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "107" + }, + "isPlayable": true, + "lengthSeconds": "219", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 39 seconds" + } + }, + "simpleText": "3:39" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "g4poKgQZX6w" + ] + } + }, + "openMiniplayer": true, + "videoId": "g4poKgQZX6w", + "videoIds": [ + "g4poKgQZX6w" + ] + }, + "clickTrackingParams": "CMcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CMYBEMY0GAgiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMYBEMY0GAgiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=g4poKgQZX6w&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=107", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 106, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "g4poKgQZX6w", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jelne7.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=838a682a04195fac&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXK2490SNd8EOm84Es6USjw", + "canonicalBaseUrl": "/channel/UCXK2490SNd8EOm84Es6USjw" + }, + "clickTrackingParams": "CMYBEMY0GAgiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCXK2490SNd8EOm84Es6USjw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stay High" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/g4poKgQZX6w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBog509zw2F56xrdDsQkeRiuEC-xg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/g4poKgQZX6w/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAMTBvztqRlyZCUrAPHcuRir49-9w", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/g4poKgQZX6w/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBCE0c5CO99TxZCIo6YddaMvrnVFA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/g4poKgQZX6w/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCare0aMSSi52ESHefOv_ZPggGfIg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 39 seconds" + } + }, + "simpleText": "3:39" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Ufo361 - „BEVERLY HILLS“ (prod. von AT Beatz/Jimmy Torrio) [Official HD Video] by Stay High 4 years ago 3 minutes, 39 seconds" + } + }, + "runs": [ + { + "text": "Ufo361 - „BEVERLY HILLS“ (prod. von AT Beatz/Jimmy Torrio) [Official HD Video]" + } + ] + }, + "trackingParams": "CMYBEMY0GAgiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "g4poKgQZX6w" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "108" + }, + "isPlayable": true, + "lengthSeconds": "167", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 47 seconds" + } + }, + "simpleText": "2:47" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "YTHr7gxwYUQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "YTHr7gxwYUQ", + "videoIds": [ + "YTHr7gxwYUQ" + ] + }, + "clickTrackingParams": "CMUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CMQBEMY0GAkiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMQBEMY0GAkiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=YTHr7gxwYUQ&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=108", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 107, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "YTHr7gxwYUQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeened.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=6131ebee0c706144&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCqv9TYpXUAo-Qy_tOPPSUYg", + "canonicalBaseUrl": "/c/HypnotizeEntertainment" + }, + "clickTrackingParams": "CMQBEMY0GAkiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/HypnotizeEntertainment", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Hypnotize Entertainment" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/YTHr7gxwYUQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgyAHaOHTo5EebRbB0J0b6nA_-aA", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/YTHr7gxwYUQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAKCy0-YdNUXzR4HYei5mZmxeTdIQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/YTHr7gxwYUQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCxQqBeRSP0d_rHfQ6JumHuXRr9uw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/YTHr7gxwYUQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDP6A3n-4kU9fOmo1RQU43hSuw5cQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 47 seconds" + } + }, + "simpleText": "2:47" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "DARDAN X LUCIANO - AIRMAX GEGEN KOPF (prod. by Leryk) by Hypnotize Entertainment 4 years ago 2 minutes, 47 seconds" + } + }, + "runs": [ + { + "text": "DARDAN X LUCIANO - AIRMAX GEGEN KOPF (prod. by Leryk)" + } + ] + }, + "trackingParams": "CMQBEMY0GAkiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "YTHr7gxwYUQ" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "109" + }, + "isPlayable": true, + "lengthSeconds": "182", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 2 seconds" + } + }, + "simpleText": "3:02" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "MfCSDn6q6j4" + ] + } + }, + "openMiniplayer": true, + "videoId": "MfCSDn6q6j4", + "videoIds": [ + "MfCSDn6q6j4" + ] + }, + "clickTrackingParams": "CMMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CMIBEMY0GAoiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMIBEMY0GAoiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=MfCSDn6q6j4&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=109", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 108, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "MfCSDn6q6j4", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelnes.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=31f0920e7eaaea3e&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC0udgVvsJRuH4WfuIuRPSiw", + "canonicalBaseUrl": "/channel/UC0udgVvsJRuH4WfuIuRPSiw" + }, + "clickTrackingParams": "CMIBEMY0GAoiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0udgVvsJRuH4WfuIuRPSiw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "YONII OFFICIAL" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/MfCSDn6q6j4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBEG2udEnlreWP8ezpx5j-1RpYrwg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/MfCSDn6q6j4/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCREemNFJkRzc2jPTEwSgg3O6lqiw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/MfCSDn6q6j4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLABAC_h0cQBGYojerhZ_ZFiZkzEEw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/MfCSDn6q6j4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDUEDo2ujFKcu7Q5u28a6zvk3IzrQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 2 seconds" + } + }, + "simpleText": "3:02" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "YONII - DIRECTION prod. by LUCRY (Official 4K Video) by YONII OFFICIAL 4 years ago 3 minutes, 2 seconds" + } + }, + "runs": [ + { + "text": "YONII - DIRECTION prod. by LUCRY (Official 4K Video)" + } + ] + }, + "trackingParams": "CMIBEMY0GAoiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "MfCSDn6q6j4" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "110" + }, + "isPlayable": true, + "lengthSeconds": "166", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 46 seconds" + } + }, + "simpleText": "2:46" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "gx9KFXb5x_o" + ] + } + }, + "openMiniplayer": true, + "videoId": "gx9KFXb5x_o", + "videoIds": [ + "gx9KFXb5x_o" + ] + }, + "clickTrackingParams": "CMEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CMABEMY0GAsiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMABEMY0GAsiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=gx9KFXb5x_o&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=110", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 109, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "gx9KFXb5x_o", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelnez.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=831f4a1576f9c7fa&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCfiRDetbZHqjfVHOUz-kolw", + "canonicalBaseUrl": "/c/ClubsoundsDeOfficial" + }, + "clickTrackingParams": "CMABEMY0GAsiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/ClubsoundsDeOfficial", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Club Sounds" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/gx9KFXb5x_o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCQmzWXiU6YGpce9EAK0b1z2Y_QyQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/gx9KFXb5x_o/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD82uiRXRm4wYK_ZJ0oQBChSGdVGQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/gx9KFXb5x_o/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAcOJMBwcpsTcBQx6NSEWbRjg1O0w", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/gx9KFXb5x_o/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAkLFadbT6qWiaADQ8Q-g7aiYwIjQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 46 seconds" + } + }, + "simpleText": "2:46" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Anstandslos & Durchgeknallt - Egal ft. Jasmiina (Official Video) by Club Sounds 4 years ago 2 minutes, 46 seconds" + } + }, + "runs": [ + { + "text": "Anstandslos & Durchgeknallt - Egal ft. Jasmiina (Official Video)" + } + ] + }, + "trackingParams": "CMABEMY0GAsiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "gx9KFXb5x_o" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "111" + }, + "isPlayable": true, + "lengthSeconds": "205", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 25 seconds" + } + }, + "simpleText": "3:25" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CL8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "d7R7DQ5tlQo" + ] + } + }, + "openMiniplayer": true, + "videoId": "d7R7DQ5tlQo", + "videoIds": [ + "d7R7DQ5tlQo" + ] + }, + "clickTrackingParams": "CL8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CL8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CL4BEMY0GAwiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CL4BEMY0GAwiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=d7R7DQ5tlQo&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=111", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 110, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "d7R7DQ5tlQo", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenld.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=77b47b0d0e6d950a&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChqcJ_MhP9a4bXy1jQ0QPzQ", + "canonicalBaseUrl": "/channel/UChqcJ_MhP9a4bXy1jQ0QPzQ" + }, + "clickTrackingParams": "CL4BEMY0GAwiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChqcJ_MhP9a4bXy1jQ0QPzQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "RAF Camora" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/d7R7DQ5tlQo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDeUBwyhvVq_h9-oRTQ82-tcP7cYg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/d7R7DQ5tlQo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-vCrXpeZOjOfrK2XpudNxay48DQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/d7R7DQ5tlQo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC7QH3B-4D8-k_F_uj1nfSDrLDy7Q", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/d7R7DQ5tlQo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA7DuaVyxSPjfZsWrRf3jN37L0dHg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 25 seconds" + } + }, + "simpleText": "3:25" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "RAF Camora - SAG NIX (Anthrazit RR) #02 by RAF Camora 4 years ago 3 minutes, 25 seconds" + } + }, + "runs": [ + { + "text": "RAF Camora - SAG NIX (Anthrazit RR) #02" + } + ] + }, + "trackingParams": "CL4BEMY0GAwiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "d7R7DQ5tlQo" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "112" + }, + "isPlayable": true, + "lengthSeconds": "294", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 54 seconds" + } + }, + "simpleText": "4:54" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CL0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "cZPjgcqHSa8" + ] + } + }, + "openMiniplayer": true, + "videoId": "cZPjgcqHSa8", + "videoIds": [ + "cZPjgcqHSa8" + ] + }, + "clickTrackingParams": "CL0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CL0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CLwBEMY0GA0iEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLwBEMY0GA0iEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=cZPjgcqHSa8&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=112", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 111, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "cZPjgcqHSa8", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelne7.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=7193e381ca8749af&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCvnCXuh_zhm75EJ89qJ95Kw", + "canonicalBaseUrl": "/c/385ideal" + }, + "clickTrackingParams": "CLwBEMY0GA0iEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/385ideal", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "385idéal" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/cZPjgcqHSa8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDnL4R2RjYxajSHM2MYHHPIGSEbHg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/cZPjgcqHSa8/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBhb2FJVgj70AQt8voXxMkhCYqR0g", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/cZPjgcqHSa8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCmOidlL4UZ-QmLfWB8id6Bl8viuw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/cZPjgcqHSa8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDj0NDpHH4qdI93IaVHJSkZ99V8mg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 54 seconds" + } + }, + "simpleText": "4:54" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Olexesh - BWA feat. Celo & Abdi, Hanybal (prod. von Drunken Masters) [Official Video] by 385idéal 4 years ago 4 minutes, 54 seconds" + } + }, + "runs": [ + { + "text": "Olexesh - BWA feat. Celo & Abdi, Hanybal (prod. von Drunken Masters) [Official Video]" + } + ] + }, + "trackingParams": "CLwBEMY0GA0iEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "cZPjgcqHSa8" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "113" + }, + "isPlayable": true, + "lengthSeconds": "198", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 18 seconds" + } + }, + "simpleText": "3:18" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "ogDLdREonWY" + ] + } + }, + "openMiniplayer": true, + "videoId": "ogDLdREonWY", + "videoIds": [ + "ogDLdREonWY" + ] + }, + "clickTrackingParams": "CLsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CLoBEMY0GA4iEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLoBEMY0GA4iEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ogDLdREonWY&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=113", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 112, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "ogDLdREonWY", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenl6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=a200cb7511289d66&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCDLPHv0SrvyUzct8UYQ9R_g", + "canonicalBaseUrl": "/c/KMNGANG" + }, + "clickTrackingParams": "CLoBEMY0GA4iEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/KMNGANG", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "KMNGANG" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/ogDLdREonWY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCE-WB-D8k22SnqNqjlGIv3PopaKA", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/ogDLdREonWY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBo8Lic2BX2rivIz4DQniLDmMx3gQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/ogDLdREonWY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAFb9kShGX9bHchsOVwq4nmW2TZFA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/ogDLdREonWY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB_XI-9gacT7HvFW088ZlyG3snsfg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 18 seconds" + } + }, + "simpleText": "3:18" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "AZET - KETTEN CARTIER (Beat by zeeko & Veteran / prod. by DJ A-Boom) by KMNGANG 4 years ago 3 minutes, 18 seconds" + } + }, + "runs": [ + { + "text": "AZET - KETTEN CARTIER (Beat by zeeko & Veteran / prod. by DJ A-Boom)" + } + ] + }, + "trackingParams": "CLoBEMY0GA4iEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "ogDLdREonWY" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "114" + }, + "isPlayable": true, + "lengthSeconds": "226", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 46 seconds" + } + }, + "simpleText": "3:46" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "pRQpKprUUPY" + ] + } + }, + "openMiniplayer": true, + "videoId": "pRQpKprUUPY", + "videoIds": [ + "pRQpKprUUPY" + ] + }, + "clickTrackingParams": "CLkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CLgBEMY0GA8iEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLgBEMY0GA8iEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=pRQpKprUUPY&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=114", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 113, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "pRQpKprUUPY", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelnes.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=a514292a9ad450f6&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCAbiUl42boUt6vUL019r9Bw", + "canonicalBaseUrl": "/c/LifeisPainTv" + }, + "clickTrackingParams": "CLgBEMY0GA8iEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/LifeisPainTv", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "LifeisPainTv" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/pRQpKprUUPY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC1RCyBcVxcI7USDT0EdCYwzsgYbQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/pRQpKprUUPY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAdjb7qKJ-JYk8KK1UXgi5IVYJKbw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/pRQpKprUUPY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAjpTHsjXkzXeeVdV4SkDPDikudNQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/pRQpKprUUPY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCkr-R-wWDlO4Afu5s6Nq9-8pQtFQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 46 seconds" + } + }, + "simpleText": "3:46" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Moe Phoenix - Ching Chang Chong (prod. by FL3X & Unik) by LifeisPainTv 4 years ago 3 minutes, 46 seconds" + } + }, + "runs": [ + { + "text": "Moe Phoenix - Ching Chang Chong (prod. by FL3X & Unik)" + } + ] + }, + "trackingParams": "CLgBEMY0GA8iEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "pRQpKprUUPY" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "115" + }, + "isPlayable": true, + "lengthSeconds": "221", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 41 seconds" + } + }, + "simpleText": "3:41" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "qZoQw9b4uCo" + ] + } + }, + "openMiniplayer": true, + "videoId": "qZoQw9b4uCo", + "videoIds": [ + "qZoQw9b4uCo" + ] + }, + "clickTrackingParams": "CLcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CLYBEMY0GBAiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLYBEMY0GBAiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=qZoQw9b4uCo&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=115", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 114, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "qZoQw9b4uCo", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jelne7.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=a99a10c3d6f8b82a&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC2p9dADVuX-faJJLX_tsqkQ", + "canonicalBaseUrl": "/channel/UC2p9dADVuX-faJJLX_tsqkQ" + }, + "clickTrackingParams": "CLYBEMY0GBAiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC2p9dADVuX-faJJLX_tsqkQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "PAYY" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/qZoQw9b4uCo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_Yap-tgk3XSsxA3-WPIDbffMP5g", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/qZoQw9b4uCo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBuhNSvP4O4B8vrHmZc9tS9m_47Iw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/qZoQw9b4uCo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC7nqkSLI1YsQOfIhJMljdk3A6hPQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/qZoQw9b4uCo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCMPNfZVyyz8-r8IyLLd7Yn37t0JA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 41 seconds" + } + }, + "simpleText": "3:41" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "PAYY x ARDIAN BUJUPI - Handschellen (Prod. by Remoe & Kostas Karagiozidis) [ OFFICIAL VIDEO ] by PAYY 4 years ago 3 minutes, 41 seconds" + } + }, + "runs": [ + { + "text": "PAYY x ARDIAN BUJUPI - Handschellen (Prod. by Remoe & Kostas Karagiozidis) [ OFFICIAL VIDEO ]" + } + ] + }, + "trackingParams": "CLYBEMY0GBAiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "qZoQw9b4uCo" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "116" + }, + "isPlayable": true, + "lengthSeconds": "271", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 31 seconds" + } + }, + "simpleText": "4:31" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "q23qghoF6Nk" + ] + } + }, + "openMiniplayer": true, + "videoId": "q23qghoF6Nk", + "videoIds": [ + "q23qghoF6Nk" + ] + }, + "clickTrackingParams": "CLUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CLQBEMY0GBEiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLQBEMY0GBEiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=q23qghoF6Nk&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=116", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 115, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "q23qghoF6Nk", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jeener.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=ab6dea821a05e8d9&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCDLPHv0SrvyUzct8UYQ9R_g", + "canonicalBaseUrl": "/c/KMNGANG" + }, + "clickTrackingParams": "CLQBEMY0GBEiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/KMNGANG", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "KMNGANG" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/q23qghoF6Nk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAon_vcMLc5GY3dZ857wU4_6sM7bQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/q23qghoF6Nk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBvafJwhZHbmRITRXYG91m7mcSz-A", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/q23qghoF6Nk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAlmFsviKx2FSq1zh2WREwgwnD7nA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/q23qghoF6Nk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCngctiXamXoTpLSNCUirBpgqUZUQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 31 seconds" + } + }, + "simpleText": "4:31" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "AZET - GJYNAH (beat by Lucry) (Official 4K Video) by KMNGANG 4 years ago 4 minutes, 31 seconds" + } + }, + "runs": [ + { + "text": "AZET - GJYNAH (beat by Lucry) (Official 4K Video)" + } + ] + }, + "trackingParams": "CLQBEMY0GBEiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "q23qghoF6Nk" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "117" + }, + "isPlayable": true, + "lengthSeconds": "206", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 26 seconds" + } + }, + "simpleText": "3:26" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "yU0aKa7PFBg" + ] + } + }, + "openMiniplayer": true, + "videoId": "yU0aKa7PFBg", + "videoIds": [ + "yU0aKa7PFBg" + ] + }, + "clickTrackingParams": "CLMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CLIBEMY0GBIiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLIBEMY0GBIiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=yU0aKa7PFBg&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=117", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 116, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "yU0aKa7PFBg", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jeln7e.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=c94d1a29aecf1418&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCn3yU2bHX_8HMCfXOBTkXCg", + "canonicalBaseUrl": "/channel/UCn3yU2bHX_8HMCfXOBTkXCg" + }, + "clickTrackingParams": "CLIBEMY0GBIiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCn3yU2bHX_8HMCfXOBTkXCg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Helene Fischer (Official)" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/yU0aKa7PFBg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDmZE8ywbjxjg8l1xwMeSJzMj27Ng", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/yU0aKa7PFBg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLClNeYU_Qi8t6v1ZYtg7daO0etzEA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/yU0aKa7PFBg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCgK4mX9tLSYbIWGeQCUMJPPnFcAg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/yU0aKa7PFBg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCBNjBybL8MtpXPJGeSO8gq0nbIdg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 26 seconds" + } + }, + "simpleText": "3:26" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Helene Fischer | Herzbeben (Live aus dem Kesselhaus München) by Helene Fischer (Official) 5 years ago 3 minutes, 26 seconds" + } + }, + "runs": [ + { + "text": "Helene Fischer | Herzbeben (Live aus dem Kesselhaus München)" + } + ] + }, + "trackingParams": "CLIBEMY0GBIiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "yU0aKa7PFBg" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "118" + }, + "isPlayable": true, + "lengthSeconds": "202", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 22 seconds" + } + }, + "simpleText": "3:22" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "DVCAqvypaCc" + ] + } + }, + "openMiniplayer": true, + "videoId": "DVCAqvypaCc", + "videoIds": [ + "DVCAqvypaCc" + ] + }, + "clickTrackingParams": "CLEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CLABEMY0GBMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CLABEMY0GBMiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=DVCAqvypaCc&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=118", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 117, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "DVCAqvypaCc", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeln7l.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=0d5080aafca96827&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCqv9TYpXUAo-Qy_tOPPSUYg", + "canonicalBaseUrl": "/c/HypnotizeEntertainment" + }, + "clickTrackingParams": "CLABEMY0GBMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/HypnotizeEntertainment", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Hypnotize Entertainment" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/DVCAqvypaCc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDzU84UNl1l4W0cTdgmX9xthBVhHw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/DVCAqvypaCc/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC0DO-ZmkxPOZhFABhpJ4Dqr5XbzQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/DVCAqvypaCc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDxOey-aolRK_yqLceDRRpH14jPNg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/DVCAqvypaCc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAdThetruX09fGIsHlohNTKmKhO3Q", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 22 seconds" + } + }, + "simpleText": "3:22" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "DARDAN - JUMP (prod. by Oster) by Hypnotize Entertainment 4 years ago 3 minutes, 22 seconds" + } + }, + "runs": [ + { + "text": "DARDAN - JUMP (prod. by Oster)" + } + ] + }, + "trackingParams": "CLABEMY0GBMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "DVCAqvypaCc" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "119" + }, + "isPlayable": true, + "lengthSeconds": "240", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes" + } + }, + "simpleText": "4:00" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CK8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "XdnI7sm6LeQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "XdnI7sm6LeQ", + "videoIds": [ + "XdnI7sm6LeQ" + ] + }, + "clickTrackingParams": "CK8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CK8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CK4BEMY0GBQiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CK4BEMY0GBQiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=XdnI7sm6LeQ&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=119", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 118, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "XdnI7sm6LeQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeener.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=5dd9c8eec9ba2de4&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChqcJ_MhP9a4bXy1jQ0QPzQ", + "canonicalBaseUrl": "/channel/UChqcJ_MhP9a4bXy1jQ0QPzQ" + }, + "clickTrackingParams": "CK4BEMY0GBQiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChqcJ_MhP9a4bXy1jQ0QPzQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "RAF Camora" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/XdnI7sm6LeQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLALhffgTUDPZfO74mZauERCfDWLFw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/XdnI7sm6LeQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDrLi28D9qPw03XRF7KNkPjFU2pBQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/XdnI7sm6LeQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBXFXlnp7L_Jw9BKx1USCLc_TnqIg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/XdnI7sm6LeQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAelda0gqmKy3F1DS9NgneqBKAZcw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes" + } + }, + "simpleText": "4:00" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "RAF Camora - Andere Liga (prod. Beataura & RAF Camora) by RAF Camora 5 years ago 4 minutes" + } + }, + "runs": [ + { + "text": "RAF Camora - Andere Liga (prod. Beataura & RAF Camora)" + } + ] + }, + "trackingParams": "CK4BEMY0GBQiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "XdnI7sm6LeQ" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "120" + }, + "isPlayable": true, + "lengthSeconds": "255", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 15 seconds" + } + }, + "simpleText": "4:15" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CK0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "KcOXNSJtFLg" + ] + } + }, + "openMiniplayer": true, + "videoId": "KcOXNSJtFLg", + "videoIds": [ + "KcOXNSJtFLg" + ] + }, + "clickTrackingParams": "CK0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CK0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CKwBEMY0GBUiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKwBEMY0GBUiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=KcOXNSJtFLg&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=120", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 119, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "KcOXNSJtFLg", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jeened.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=29c39735226d14b8&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCiro2LXCNF59XmHAyfql3Ew", + "canonicalBaseUrl": "/channel/UCiro2LXCNF59XmHAyfql3Ew" + }, + "clickTrackingParams": "CKwBEMY0GBUiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCiro2LXCNF59XmHAyfql3Ew", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Bantu Nation Channel" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/KcOXNSJtFLg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBtf7BnKkQGWA9CJSEwH_-oYzka5w", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/KcOXNSJtFLg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC7gwv8WwxHbjRyLfGxMiiTmAnPvg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/KcOXNSJtFLg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDYE2hDZrMWbbC8F7cHvZ1BSxuOrw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/KcOXNSJtFLg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA4wietfPFHLII51B9lhSBPp0Zq1g", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 15 seconds" + } + }, + "simpleText": "4:15" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Sugar MMFK - Trikot von Paris (prod. by Penacho) [4K VIDEO] by Bantu Nation Channel 4 years ago 4 minutes, 15 seconds" + } + }, + "runs": [ + { + "text": "Sugar MMFK - Trikot von Paris (prod. by Penacho) [4K VIDEO]" + } + ] + }, + "trackingParams": "CKwBEMY0GBUiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "KcOXNSJtFLg" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "121" + }, + "isPlayable": true, + "lengthSeconds": "245", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 5 seconds" + } + }, + "simpleText": "4:05" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "K0UxHXZwgsg" + ] + } + }, + "openMiniplayer": true, + "videoId": "K0UxHXZwgsg", + "videoIds": [ + "K0UxHXZwgsg" + ] + }, + "clickTrackingParams": "CKsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CKoBEMY0GBYiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKoBEMY0GBYiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=K0UxHXZwgsg&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=121", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 120, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "K0UxHXZwgsg", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeenld.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=2b45311d767082c8&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCLluoo0u8E-RI5zTNfe6o5A", + "canonicalBaseUrl": "/channel/UCLluoo0u8E-RI5zTNfe6o5A" + }, + "clickTrackingParams": "CKoBEMY0GBYiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCLluoo0u8E-RI5zTNfe6o5A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "FLER" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/K0UxHXZwgsg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD1XTfZEJtsHmu1PYtlGFwz4bAiOw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/K0UxHXZwgsg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLACui7G6ROhrahCXYvLzSYzv9eD0Q", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/K0UxHXZwgsg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBx5uvx-lUTtZm1EwwomTD1klZRLw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/K0UxHXZwgsg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBbjoXq61G2OzEy3-Tr_apO7Tzqgw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 5 seconds" + } + }, + "simpleText": "4:05" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "FLER ✖️Pfirsich/Late Check-Out ✖️► [ official Video ] prod. by Simes Add. Vocals by Mosenu by FLER 4 years ago 4 minutes, 5 seconds" + } + }, + "runs": [ + { + "text": "FLER ✖️Pfirsich/Late Check-Out ✖️► [ official Video ] prod. by Simes Add. Vocals by Mosenu" + } + ] + }, + "trackingParams": "CKoBEMY0GBYiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "K0UxHXZwgsg" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "122" + }, + "isPlayable": true, + "lengthSeconds": "166", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 46 seconds" + } + }, + "simpleText": "2:46" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "eyyNwOSQ3Yg" + ] + } + }, + "openMiniplayer": true, + "videoId": "eyyNwOSQ3Yg", + "videoIds": [ + "eyyNwOSQ3Yg" + ] + }, + "clickTrackingParams": "CKkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CKgBEMY0GBciEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKgBEMY0GBciEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=eyyNwOSQ3Yg&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=122", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 121, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "eyyNwOSQ3Yg", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jeln7e.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=7b2c8dc0e490dd88&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC7VGRS1q1XzHsAm1uM1PQ_Q", + "canonicalBaseUrl": "/c/MrGamerPros" + }, + "clickTrackingParams": "CKgBEMY0GBciEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/MrGamerPros", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "MGP" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/eyyNwOSQ3Yg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCrGr9LT69Q4tZzNwFIuUzoUAYwSQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/eyyNwOSQ3Yg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB2qG-CVHxgHMMAS5u-R1jh8UO6mw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/eyyNwOSQ3Yg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOAqVE0S3jbFA-zXKXdzXT4hbzHg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/eyyNwOSQ3Yg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBMq2kLvG8pnVoKWqnmqgaDbkkaAg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 46 seconds" + } + }, + "simpleText": "2:46" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "MGP \"BAD BITCH\" (Official Video) by MGP 4 years ago 2 minutes, 46 seconds" + } + }, + "runs": [ + { + "text": "MGP \"BAD BITCH\" (Official Video)" + } + ] + }, + "trackingParams": "CKgBEMY0GBciEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "eyyNwOSQ3Yg" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "123" + }, + "isPlayable": true, + "lengthSeconds": "219", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 39 seconds" + } + }, + "simpleText": "3:39" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "1yskotqNuXI" + ] + } + }, + "openMiniplayer": true, + "videoId": "1yskotqNuXI", + "videoIds": [ + "1yskotqNuXI" + ] + }, + "clickTrackingParams": "CKcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CKYBEMY0GBgiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKYBEMY0GBgiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=1yskotqNuXI&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=123", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 122, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "1yskotqNuXI", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jeln7e.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=d72b24a2da8db972&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCmc5ha-rlBNVB1VDeUVisLw", + "canonicalBaseUrl": "/c/DIVISIONoffline" + }, + "clickTrackingParams": "CKYBEMY0GBgiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/DIVISIONoffline", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "DIVISION" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/1yskotqNuXI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLABT4efReL1QrSECDJwROBI-pRCzw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/1yskotqNuXI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCekSNFeIjFeC1i-92vumgoKkOJ_A", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/1yskotqNuXI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAx7CPjCw-JKxZg9lewIvBlHVrVsg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/1yskotqNuXI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDJxgbBYatgVF-dvNPaO8BR22Jj8w", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 39 seconds" + } + }, + "simpleText": "3:39" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "RIN - Bros (prod. Minhtendo) by DIVISION 5 years ago 3 minutes, 39 seconds" + } + }, + "runs": [ + { + "text": "RIN - Bros (prod. Minhtendo)" + } + ] + }, + "trackingParams": "CKYBEMY0GBgiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "1yskotqNuXI" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "124" + }, + "isPlayable": true, + "lengthSeconds": "211", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 31 seconds" + } + }, + "simpleText": "3:31" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "C03n4AAiL9w" + ] + } + }, + "openMiniplayer": true, + "videoId": "C03n4AAiL9w", + "videoIds": [ + "C03n4AAiL9w" + ] + }, + "clickTrackingParams": "CKUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CKQBEMY0GBkiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKQBEMY0GBkiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=C03n4AAiL9w&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=124", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 123, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "C03n4AAiL9w", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelne7.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=0b4de7e000222fdc&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCorI9V6adKvuIYE7ey9HPQQ", + "canonicalBaseUrl": "/c/DigsterPop" + }, + "clickTrackingParams": "CKQBEMY0GBkiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/DigsterPop", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Digster Pop" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/C03n4AAiL9w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCKvhEqesIgEalpxUZClNFcg65cig", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/C03n4AAiL9w/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCiNPDZVtzE1JbW7JvD40zb-B2bow", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/C03n4AAiL9w/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDSKTzzkWbJkqD2f_7dAspBoZog6Q", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/C03n4AAiL9w/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBhFPBbabEmCm2FMFWXDAZL9-gDAA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 31 seconds" + } + }, + "simpleText": "3:31" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Glasperlenspiel - Geiles Leben (Lyric Video) by Digster Pop 7 years ago 3 minutes, 31 seconds" + } + }, + "runs": [ + { + "text": "Glasperlenspiel - Geiles Leben (Lyric Video)" + } + ] + }, + "trackingParams": "CKQBEMY0GBkiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "C03n4AAiL9w" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "125" + }, + "isPlayable": true, + "lengthSeconds": "197", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 17 seconds" + } + }, + "simpleText": "3:17" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "a2wNRTKRusM" + ] + } + }, + "openMiniplayer": true, + "videoId": "a2wNRTKRusM", + "videoIds": [ + "a2wNRTKRusM" + ] + }, + "clickTrackingParams": "CKMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CKIBEMY0GBoiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKIBEMY0GBoiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=a2wNRTKRusM&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=125", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 124, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "a2wNRTKRusM", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelne6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=6b6c0d453291bac3&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCAbiUl42boUt6vUL019r9Bw", + "canonicalBaseUrl": "/c/LifeisPainTv" + }, + "clickTrackingParams": "CKIBEMY0GBoiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/LifeisPainTv", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "LifeisPainTv" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/a2wNRTKRusM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBBKdUFUQEPrf091_3-GxUDfOuwzA", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/a2wNRTKRusM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBU4JHEdx1GLRcStQA8eC-50ffgAg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/a2wNRTKRusM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDoCMFTDWYwKEctGzPv_26QOP2ctQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/a2wNRTKRusM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDAYcq3KaYb9-W5sgGuwjxqg7imIQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 17 seconds" + } + }, + "simpleText": "3:17" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Moe Phoenix - Mohammad (prod. by AriBeatz) by LifeisPainTv 5 years ago 3 minutes, 17 seconds" + } + }, + "runs": [ + { + "text": "Moe Phoenix - Mohammad (prod. by AriBeatz)" + } + ] + }, + "trackingParams": "CKIBEMY0GBoiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "a2wNRTKRusM" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "126" + }, + "isPlayable": true, + "lengthSeconds": "268", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 28 seconds" + } + }, + "simpleText": "4:28" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "AIf61iHwWMQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "AIf61iHwWMQ", + "videoIds": [ + "AIf61iHwWMQ" + ] + }, + "clickTrackingParams": "CKEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CKABEMY0GBsiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CKABEMY0GBsiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=AIf61iHwWMQ&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=126", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 125, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "AIf61iHwWMQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=0087fad621f058c4&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChqcJ_MhP9a4bXy1jQ0QPzQ", + "canonicalBaseUrl": "/channel/UChqcJ_MhP9a4bXy1jQ0QPzQ" + }, + "clickTrackingParams": "CKABEMY0GBsiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChqcJ_MhP9a4bXy1jQ0QPzQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "RAF Camora" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/AIf61iHwWMQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDOB2LLlsczwY-nRhzA0m4rzWF7yg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/AIf61iHwWMQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCcz1bkma3cggoRoqu9ODX7K2jvoQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/AIf61iHwWMQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBW28E7y8mPTz2bpj7kSQpMzhuNBA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/AIf61iHwWMQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBkWRuHbBTg9Hg46vRsNHM7NgIaCA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 28 seconds" + } + }, + "simpleText": "4:28" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "RAF Camora feat. UFO 361, GZUZ & Bonez MC - WAFFEN (Anthrazit RR) #07 by RAF Camora 4 years ago 4 minutes, 28 seconds" + } + }, + "runs": [ + { + "text": "RAF Camora feat. UFO 361, GZUZ & Bonez MC - WAFFEN (Anthrazit RR) #07" + } + ] + }, + "trackingParams": "CKABEMY0GBsiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "AIf61iHwWMQ" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "127" + }, + "isPlayable": true, + "lengthSeconds": "319", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "5 minutes, 19 seconds" + } + }, + "simpleText": "5:19" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJ8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "BixqbSRjY2Y" + ] + } + }, + "openMiniplayer": true, + "videoId": "BixqbSRjY2Y", + "videoIds": [ + "BixqbSRjY2Y" + ] + }, + "clickTrackingParams": "CJ8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJ8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CJ4BEMY0GBwiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ4BEMY0GBwiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=BixqbSRjY2Y&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=127", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 126, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "BixqbSRjY2Y", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=062c6a6d24636366&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChqcJ_MhP9a4bXy1jQ0QPzQ", + "canonicalBaseUrl": "/channel/UChqcJ_MhP9a4bXy1jQ0QPzQ" + }, + "clickTrackingParams": "CJ4BEMY0GBwiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChqcJ_MhP9a4bXy1jQ0QPzQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "RAF Camora" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/BixqbSRjY2Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDrOaouRgB68UYhr338njl3BEVTdg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/BixqbSRjY2Y/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBt6nMyfc_vzQqJh7ThInN5D_83-Q", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/BixqbSRjY2Y/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDx1vCRa9A-pL6hw3pZA6PwZ3GCNQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/BixqbSRjY2Y/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAmOOT2CwSl85QDzkhXDZBD12QJ7A", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "5 minutes, 19 seconds" + } + }, + "simpleText": "5:19" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "RAF Camora - ALLES PROBIERT feat. BONEZ MC (prod.by Beataura & RAF Camora) by RAF Camora 5 years ago 5 minutes, 19 seconds" + } + }, + "runs": [ + { + "text": "RAF Camora - ALLES PROBIERT feat. BONEZ MC (prod.by Beataura & RAF Camora)" + } + ] + }, + "trackingParams": "CJ4BEMY0GBwiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "BixqbSRjY2Y" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "128" + }, + "isPlayable": true, + "lengthSeconds": "226", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 46 seconds" + } + }, + "simpleText": "3:46" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJ0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Acgy-3d4P6o" + ] + } + }, + "openMiniplayer": true, + "videoId": "Acgy-3d4P6o", + "videoIds": [ + "Acgy-3d4P6o" + ] + }, + "clickTrackingParams": "CJ0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJ0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CJwBEMY0GB0iEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJwBEMY0GB0iEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Acgy-3d4P6o&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=128", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 127, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "Acgy-3d4P6o", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jelne7.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=01c832fb77783faa&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCIgCb1dYprH140Ds0mgeAUA", + "canonicalBaseUrl": "/channel/UCIgCb1dYprH140Ds0mgeAUA" + }, + "clickTrackingParams": "CJwBEMY0GB0iEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCIgCb1dYprH140Ds0mgeAUA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Kontra K" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/Acgy-3d4P6o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCBOvR8ORBuQ6zpDKCqfjS2CoAFvA", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/Acgy-3d4P6o/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBISe9JC5yaQZBvWbJuqgXO-m8dEg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/Acgy-3d4P6o/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBWNJqhutsL2FyEBAC_IHdrebOhzA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/Acgy-3d4P6o/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOOwb1WFjfacD5KxiSfL1WjBpugA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 46 seconds" + } + }, + "simpleText": "3:46" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Kontra K - Erfolg ist kein Glück (Official Video) by Kontra K 7 years ago 3 minutes, 46 seconds" + } + }, + "runs": [ + { + "text": "Kontra K - Erfolg ist kein Glück (Official Video)" + } + ] + }, + "trackingParams": "CJwBEMY0GB0iEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "Acgy-3d4P6o" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "129" + }, + "isPlayable": true, + "lengthSeconds": "156", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 36 seconds" + } + }, + "simpleText": "2:36" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "5M_yA9M7yNc" + ] + } + }, + "openMiniplayer": true, + "videoId": "5M_yA9M7yNc", + "videoIds": [ + "5M_yA9M7yNc" + ] + }, + "clickTrackingParams": "CJsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CJoBEMY0GB4iEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJoBEMY0GB4iEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=5M_yA9M7yNc&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=129", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 128, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "5M_yA9M7yNc", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeln7l.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=e4cff203d33bc8d7&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChqcJ_MhP9a4bXy1jQ0QPzQ", + "canonicalBaseUrl": "/channel/UChqcJ_MhP9a4bXy1jQ0QPzQ" + }, + "clickTrackingParams": "CJoBEMY0GB4iEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChqcJ_MhP9a4bXy1jQ0QPzQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "RAF Camora" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/5M_yA9M7yNc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCviCUA-ubhSSDyG7yt8Q1FEbCdtQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/5M_yA9M7yNc/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCDEFhdP5q_KHJTM_F3ZCst4T28ig", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/5M_yA9M7yNc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCyCJ569EEQv-dlt4mwWdBjiA0Gag", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/5M_yA9M7yNc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCWtLTDbDeZZO41b9tBbuqPsSrwxQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 36 seconds" + } + }, + "simpleText": "2:36" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "RAF Camora - GOTHAM CITY (Anthrazit RR) #03 by RAF Camora 4 years ago 2 minutes, 36 seconds" + } + }, + "runs": [ + { + "text": "RAF Camora - GOTHAM CITY (Anthrazit RR) #03" + } + ] + }, + "trackingParams": "CJoBEMY0GB4iEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "5M_yA9M7yNc" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "130" + }, + "isPlayable": true, + "lengthSeconds": "258", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 18 seconds" + } + }, + "simpleText": "4:18" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "PjJuezhos3U" + ] + } + }, + "openMiniplayer": true, + "videoId": "PjJuezhos3U", + "videoIds": [ + "PjJuezhos3U" + ] + }, + "clickTrackingParams": "CJkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CJgBEMY0GB8iEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJgBEMY0GB8iEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=PjJuezhos3U&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=130", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 129, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "PjJuezhos3U", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeln7l.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=3e326e7b3868b375&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCU920m2cTElVE62gZ84iqrQ", + "canonicalBaseUrl": "/channel/UCU920m2cTElVE62gZ84iqrQ" + }, + "clickTrackingParams": "CJgBEMY0GB8iEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCU920m2cTElVE62gZ84iqrQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Fard" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/PjJuezhos3U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAulYAOlEdmCEOUhn3IQDk6lWuC5A", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/PjJuezhos3U/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC499x2PZvQ3sQ9pcLylcbq2PUW8w", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/PjJuezhos3U/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD0fOv4HPta82riXU7YKT9cdh8HBw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/PjJuezhos3U/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCeCcf9A6ZP31VcCrRoHEkD1g8lxQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 18 seconds" + } + }, + "simpleText": "4:18" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Fard - \"LIEBE MACHT BLIND\" (Official Video) prod.by Abaz & X-Plosive by Fard 4 years ago 4 minutes, 18 seconds" + } + }, + "runs": [ + { + "text": "Fard - \"LIEBE MACHT BLIND\" (Official Video) prod.by Abaz & X-Plosive" + } + ] + }, + "trackingParams": "CJgBEMY0GB8iEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "PjJuezhos3U" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "131" + }, + "isPlayable": true, + "lengthSeconds": "262", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 22 seconds" + } + }, + "simpleText": "4:22" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "XMutaJI2-kc" + ] + } + }, + "openMiniplayer": true, + "videoId": "XMutaJI2-kc", + "videoIds": [ + "XMutaJI2-kc" + ] + }, + "clickTrackingParams": "CJcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CJYBEMY0GCAiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJYBEMY0GCAiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=XMutaJI2-kc&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=131", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 130, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "XMutaJI2-kc", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jelnez.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=5ccbad689236fa47&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbDNCzgdLlvYY9dk5M8063A", + "canonicalBaseUrl": "/c/BangerChannel" + }, + "clickTrackingParams": "CJYBEMY0GCAiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/BangerChannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "BangerChannel" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/XMutaJI2-kc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCCJIA4Omo1CkTXkOzYVdNbP0Mkrw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/XMutaJI2-kc/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDkib0bhaVP8e67Et7PxExfuwkrLA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/XMutaJI2-kc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAK0KdCZvfXiEn_tjkdWN5ykl2BCw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/XMutaJI2-kc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBprkJ4bIoC6SzCWd1R02TLA4OM5A", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 22 seconds" + } + }, + "simpleText": "4:22" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "18 Karat ✖️• MAMA IST NICHT STOLZ •✖️ [ official Video ] by BangerChannel 4 years ago 4 minutes, 22 seconds" + } + }, + "runs": [ + { + "text": "18 Karat ✖️• MAMA IST NICHT STOLZ •✖️ [ official Video ]" + } + ] + }, + "trackingParams": "CJYBEMY0GCAiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "XMutaJI2-kc" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "132" + }, + "isPlayable": true, + "lengthSeconds": "228", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 48 seconds" + } + }, + "simpleText": "3:48" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Xac6Q7hcZkQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "Xac6Q7hcZkQ", + "videoIds": [ + "Xac6Q7hcZkQ" + ] + }, + "clickTrackingParams": "CJUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CJQBEMY0GCEiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJQBEMY0GCEiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Xac6Q7hcZkQ&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=132", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 131, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "Xac6Q7hcZkQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jelne6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=5da73a43b85c6644&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCmc5ha-rlBNVB1VDeUVisLw", + "canonicalBaseUrl": "/c/DIVISIONoffline" + }, + "clickTrackingParams": "CJQBEMY0GCEiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/DIVISIONoffline", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "DIVISION" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/Xac6Q7hcZkQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDkwIz_hDDGLXX8i3uaKaWIl9ZH1Q", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/Xac6Q7hcZkQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD2DYyACiQ8mLIVyirplceMpVQTnw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/Xac6Q7hcZkQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDvCWuTEmZWqGOmr0wMdv-Nc45W1Q", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/Xac6Q7hcZkQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCAD-W9JCZlIM9r2I3nco7XeAQ42g", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 48 seconds" + } + }, + "simpleText": "3:48" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "RIN - Monica Bellucci (prod. Alexis Troy) by DIVISION 5 years ago 3 minutes, 48 seconds" + } + }, + "runs": [ + { + "text": "RIN - Monica Bellucci (prod. Alexis Troy)" + } + ] + }, + "trackingParams": "CJQBEMY0GCEiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "Xac6Q7hcZkQ" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "133" + }, + "isPlayable": true, + "lengthSeconds": "222", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 42 seconds" + } + }, + "simpleText": "3:42" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "JfwjsjBcDoU" + ] + } + }, + "openMiniplayer": true, + "videoId": "JfwjsjBcDoU", + "videoIds": [ + "JfwjsjBcDoU" + ] + }, + "clickTrackingParams": "CJMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CJIBEMY0GCIiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJIBEMY0GCIiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=JfwjsjBcDoU&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=133", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 132, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "JfwjsjBcDoU", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jeenl6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=25fc23b2305c0e85&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCn3yU2bHX_8HMCfXOBTkXCg", + "canonicalBaseUrl": "/channel/UCn3yU2bHX_8HMCfXOBTkXCg" + }, + "clickTrackingParams": "CJIBEMY0GCIiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCn3yU2bHX_8HMCfXOBTkXCg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Helene Fischer (Official)" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/JfwjsjBcDoU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDMhxxaiLymi4ZQ3WvJpovkdQfqSQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/JfwjsjBcDoU/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBz0-gPSLQoTp_vUnecGrEdZbPScg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/JfwjsjBcDoU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAD05pV1vso8dteDc04ldzp29dqcA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/JfwjsjBcDoU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBl-j3JeOJJrQFzb_5rX7wgeqbJxQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 42 seconds" + } + }, + "simpleText": "3:42" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Helene Fischer - Achterbahn by Helene Fischer (Official) 4 years ago 3 minutes, 42 seconds" + } + }, + "runs": [ + { + "text": "Helene Fischer - Achterbahn" + } + ] + }, + "trackingParams": "CJIBEMY0GCIiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "JfwjsjBcDoU" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "134" + }, + "isPlayable": true, + "lengthSeconds": "226", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 46 seconds" + } + }, + "simpleText": "3:46" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "zshiQUV3ohw" + ] + } + }, + "openMiniplayer": true, + "videoId": "zshiQUV3ohw", + "videoIds": [ + "zshiQUV3ohw" + ] + }, + "clickTrackingParams": "CJEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CJABEMY0GCMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJABEMY0GCMiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=zshiQUV3ohw&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=134", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 133, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "zshiQUV3ohw", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=cec862414577a21c&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCAbiUl42boUt6vUL019r9Bw", + "canonicalBaseUrl": "/c/LifeisPainTv" + }, + "clickTrackingParams": "CJABEMY0GCMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/LifeisPainTv", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "LifeisPainTv" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/zshiQUV3ohw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAqPtA9IBm0Dp_o89aj1F18oYvRnw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/zshiQUV3ohw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDBdB9lnuis16jFRv15Gc0bUe71Ug", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/zshiQUV3ohw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCmoGm1k9xAb6S1Kzdaz77b4mbTTg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/zshiQUV3ohw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBVxe7whEBebIVVACSApLWsnitDMA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 46 seconds" + } + }, + "simpleText": "3:46" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "MOE PHOENIX feat. VEYSEL - GAUNER (prod. by Ghana Beats) by LifeisPainTv 4 years ago 3 minutes, 46 seconds" + } + }, + "runs": [ + { + "text": "MOE PHOENIX feat. VEYSEL - GAUNER (prod. by Ghana Beats)" + } + ] + }, + "trackingParams": "CJABEMY0GCMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "zshiQUV3ohw" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "135" + }, + "isPlayable": true, + "lengthSeconds": "303", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "5 minutes, 3 seconds" + } + }, + "simpleText": "5:03" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CI8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "g1eTAt1_VAM" + ] + } + }, + "openMiniplayer": true, + "videoId": "g1eTAt1_VAM", + "videoIds": [ + "g1eTAt1_VAM" + ] + }, + "clickTrackingParams": "CI8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CI8BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CI4BEMY0GCQiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CI4BEMY0GCQiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=g1eTAt1_VAM&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=135", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 134, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "g1eTAt1_VAM", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=83579302dd7f5403&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCvnCXuh_zhm75EJ89qJ95Kw", + "canonicalBaseUrl": "/c/385ideal" + }, + "clickTrackingParams": "CI4BEMY0GCQiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/385ideal", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "385idéal" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/g1eTAt1_VAM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBuGSL6ChVGrfHZvlpcgOnkQmDnkg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/g1eTAt1_VAM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_tC-fs_M8zMStMZhwyFLZ4vURMw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/g1eTAt1_VAM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAtKK4Ac2RDWJ50aqCmfnfHWxtHBQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/g1eTAt1_VAM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLApU6MqRttnrz_OCq_IicIUFIlE3A", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "5 minutes, 3 seconds" + } + }, + "simpleText": "5:03" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Nimo - HYPE feat. Celo & Abdi (prod. von Matveï) [Official 4K Video] by 385idéal 5 years ago 5 minutes, 3 seconds" + } + }, + "runs": [ + { + "text": "Nimo - HYPE feat. Celo & Abdi (prod. von Matveï) [Official 4K Video]" + } + ] + }, + "trackingParams": "CI4BEMY0GCQiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "g1eTAt1_VAM" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "136" + }, + "isPlayable": true, + "lengthSeconds": "252", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 12 seconds" + } + }, + "simpleText": "4:12" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CI0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "c3rLrFC8igY" + ] + } + }, + "openMiniplayer": true, + "videoId": "c3rLrFC8igY", + "videoIds": [ + "c3rLrFC8igY" + ] + }, + "clickTrackingParams": "CI0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CI0BEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CIwBEMY0GCUiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIwBEMY0GCUiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=c3rLrFC8igY&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=136", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 135, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "c3rLrFC8igY", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jeenl6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=737acbac50bc8a06&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCjXt6co1pkPxBRY2FkH2YwQ", + "canonicalBaseUrl": "/c/SentinelSBG" + }, + "clickTrackingParams": "CIwBEMY0GCUiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/SentinelSBG", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Damestream Records" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/c3rLrFC8igY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC8th_cJuzgJBvTHkU0F7_1o_EeSg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/c3rLrFC8igY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC6jZzNSOqiRb7tYHVlYDdvPagz0Q", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/c3rLrFC8igY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDJy15I-6Ln2vlHq52btWvzSxrQgQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/c3rLrFC8igY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCakhPo-3n3KOEMHFS47VMfQMPQdA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 12 seconds" + } + }, + "simpleText": "4:12" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Dame - Auf die guten alten Zeiten [Official HD Video] by Damestream Records 8 years ago 4 minutes, 12 seconds" + } + }, + "runs": [ + { + "text": "Dame - Auf die guten alten Zeiten [Official HD Video]" + } + ] + }, + "trackingParams": "CIwBEMY0GCUiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "c3rLrFC8igY" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "137" + }, + "isPlayable": true, + "lengthSeconds": "209", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 29 seconds" + } + }, + "simpleText": "3:29" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "1im4DNEYzEM" + ] + } + }, + "openMiniplayer": true, + "videoId": "1im4DNEYzEM", + "videoIds": [ + "1im4DNEYzEM" + ] + }, + "clickTrackingParams": "CIsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIsBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CIoBEMY0GCYiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIoBEMY0GCYiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=1im4DNEYzEM&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=137", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 136, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "1im4DNEYzEM", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelne7.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=d629b80cd118cc43&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGh8tmH9x9njaI2mXfh2fyg", + "canonicalBaseUrl": "/user/CrhymeTV" + }, + "clickTrackingParams": "CIoBEMY0GCYiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/user/CrhymeTV", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "CrhymeTV" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/1im4DNEYzEM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCK7w05DebTnm9tXPT2AF4BYZQkpg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/1im4DNEYzEM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDRmSY6Se210dAveiJFWqaZh3Ll3g", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/1im4DNEYzEM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDV5P3L-vcOyNA2ox2AVEX-zvSIig", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/1im4DNEYzEM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDE401pvTHn0_fw9M19UR9YqCVTCw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 29 seconds" + } + }, + "simpleText": "3:29" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Gzuz - Optimal (Jambeatz) by CrhymeTV 6 years ago 3 minutes, 29 seconds" + } + }, + "runs": [ + { + "text": "Gzuz - Optimal (Jambeatz)" + } + ] + }, + "trackingParams": "CIoBEMY0GCYiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "1im4DNEYzEM" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "138" + }, + "isPlayable": true, + "lengthSeconds": "184", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 4 seconds" + } + }, + "simpleText": "3:04" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "8BUxw9ocM2s" + ] + } + }, + "openMiniplayer": true, + "videoId": "8BUxw9ocM2s", + "videoIds": [ + "8BUxw9ocM2s" + ] + }, + "clickTrackingParams": "CIkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIkBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CIgBEMY0GCciEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIgBEMY0GCciEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=8BUxw9ocM2s&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=138", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 137, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "8BUxw9ocM2s", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jeenld.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=f01531c3da1c336b&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCO8_DFkr_fn_YDup_7OZNow", + "canonicalBaseUrl": "/channel/UCO8_DFkr_fn_YDup_7OZNow" + }, + "clickTrackingParams": "CIgBEMY0GCciEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCO8_DFkr_fn_YDup_7OZNow", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "El Cartel Music" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/8BUxw9ocM2s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD07FNMfJFNvAE1cQaM6d0TKN3thA", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/8BUxw9ocM2s/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCROqTcS1nxiVoWk2FekcAotO9g6w", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/8BUxw9ocM2s/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBBaJh8s_5BeYwlUNNDH9aWkB52Aw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/8BUxw9ocM2s/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBg09rMWtPSDybzdHqiINh76JjB5Q", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 4 seconds" + } + }, + "simpleText": "3:04" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "EULE aka Jazzy Gudd - Stehaufmädchen (Official Video) by El Cartel Music 4 years ago 3 minutes, 4 seconds" + } + }, + "runs": [ + { + "text": "EULE aka Jazzy Gudd - Stehaufmädchen (Official Video)" + } + ] + }, + "trackingParams": "CIgBEMY0GCciEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "8BUxw9ocM2s" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "139" + }, + "isPlayable": true, + "lengthSeconds": "201", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 21 seconds" + } + }, + "simpleText": "3:21" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "g4cSpnGbHPE" + ] + } + }, + "openMiniplayer": true, + "videoId": "g4cSpnGbHPE", + "videoIds": [ + "g4cSpnGbHPE" + ] + }, + "clickTrackingParams": "CIcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIcBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CIYBEMY0GCgiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIYBEMY0GCgiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=g4cSpnGbHPE&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=139", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 138, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "g4cSpnGbHPE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jelne7.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=838712a6719b1cf1&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGU9EqK5V5m141sNPCOfRBg", + "canonicalBaseUrl": "/c/TEAMKUKU" + }, + "clickTrackingParams": "CIYBEMY0GCgiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/TEAMKUKU", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "TEAM KUKU" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/g4cSpnGbHPE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAxbM8Us6Xq4TC42SgIawdzsI5kBw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/g4cSpnGbHPE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAavp2izEfHTcaJxdVfkhgaA8h7MA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/g4cSpnGbHPE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCMKNei26RcrCVe8Si2l8lJVm0iCg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/g4cSpnGbHPE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLADSLy-UNKmodAC1CgdW4zNs0qvgA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 21 seconds" + } + }, + "simpleText": "3:21" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "CAPITAL BRA & KING KHALIL - ZWEISTELLIGE HAFTSTRAFEN (PROD. SAVEN MUSIQ) by TEAM KUKU 4 years ago 3 minutes, 21 seconds" + } + }, + "runs": [ + { + "text": "CAPITAL BRA & KING KHALIL - ZWEISTELLIGE HAFTSTRAFEN (PROD. SAVEN MUSIQ)" + } + ] + }, + "trackingParams": "CIYBEMY0GCgiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "g4cSpnGbHPE" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "140" + }, + "isPlayable": true, + "lengthSeconds": "296", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 56 seconds" + } + }, + "simpleText": "4:56" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "1Sdj9MiCowQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "1Sdj9MiCowQ", + "videoIds": [ + "1Sdj9MiCowQ" + ] + }, + "clickTrackingParams": "CIUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIUBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CIQBEMY0GCkiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIQBEMY0GCkiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=1Sdj9MiCowQ&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=140", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 139, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "1Sdj9MiCowQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenl6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=d52763f4c882a304&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGh8tmH9x9njaI2mXfh2fyg", + "canonicalBaseUrl": "/user/CrhymeTV" + }, + "clickTrackingParams": "CIQBEMY0GCkiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/user/CrhymeTV", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "CrhymeTV" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/1Sdj9MiCowQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBiHVp4uTcgnNiLXVp8txVAsQLRRg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/1Sdj9MiCowQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDGLCp7AlMGH_fX-eRdPowoA0uKdA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/1Sdj9MiCowQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDTK7_hhsEClc3GfQvT_UspyUXKKA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/1Sdj9MiCowQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC3n4rISh6jhYf3loVL9s0_4wsD8A", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 56 seconds" + } + }, + "simpleText": "4:56" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "187 Strassenbande - 10 Jahre (Jambeatz) by CrhymeTV 5 years ago 4 minutes, 56 seconds" + } + }, + "runs": [ + { + "text": "187 Strassenbande - 10 Jahre (Jambeatz)" + } + ] + }, + "trackingParams": "CIQBEMY0GCkiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "1Sdj9MiCowQ" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "141" + }, + "isPlayable": true, + "lengthSeconds": "237", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 57 seconds" + } + }, + "simpleText": "3:57" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "2DbR35g-0ZY" + ] + } + }, + "openMiniplayer": true, + "videoId": "2DbR35g-0ZY", + "videoIds": [ + "2DbR35g-0ZY" + ] + }, + "clickTrackingParams": "CIMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIMBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CIIBEMY0GCoiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIIBEMY0GCoiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=2DbR35g-0ZY&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=141", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 140, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "2DbR35g-0ZY", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jelnes.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=d836d1df983ed196&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCXK2490SNd8EOm84Es6USjw", + "canonicalBaseUrl": "/channel/UCXK2490SNd8EOm84Es6USjw" + }, + "clickTrackingParams": "CIIBEMY0GCoiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCXK2490SNd8EOm84Es6USjw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stay High" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/2DbR35g-0ZY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5oyx0LTAyq3KN833dpoMqO0pPlQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/2DbR35g-0ZY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDBF4KWSmY3YhpNdUd38dx2WIsTJQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/2DbR35g-0ZY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDHAtZj8S4eJrW97GAa_79KbZwDLw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/2DbR35g-0ZY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDMF9z3GuaV8Wm7GnoZQp-lBwMtRQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 57 seconds" + } + }, + "simpleText": "3:57" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Ufo361 - \"DER PATE\" (prod. von Broke Boys) [Official HD Video] by Stay High 5 years ago 3 minutes, 57 seconds" + } + }, + "runs": [ + { + "text": "Ufo361 - \"DER PATE\" (prod. von Broke Boys) [Official HD Video]" + } + ] + }, + "trackingParams": "CIIBEMY0GCoiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "2DbR35g-0ZY" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "142" + }, + "isPlayable": true, + "lengthSeconds": "272", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 32 seconds" + } + }, + "simpleText": "4:32" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "j09hpp3AxIE" + ] + } + }, + "openMiniplayer": true, + "videoId": "j09hpp3AxIE", + "videoIds": [ + "j09hpp3AxIE" + ] + }, + "clickTrackingParams": "CIEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIEBEP6YBBgDIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "trackingParams": "CIABEMY0GCsiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIABEMY0GCsiEwib2ZbYiOj6AhXE2xEIHbfOCpgyCnBscHBfdmlkZW9aJFZMUEw1ZER4NjgxVDRiUjdaRjFJdVd6T3Yxb21sUmJFN1BpSpoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=j09hpp3AxIE&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=142", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 141, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "j09hpp3AxIE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jelnez.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=8f4f61a69dc0c481&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCzQaHdbeofGzUvzUsLyvUIg", + "canonicalBaseUrl": "/channel/UCzQaHdbeofGzUvzUsLyvUIg" + }, + "clickTrackingParams": "CIABEMY0GCsiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCzQaHdbeofGzUvzUsLyvUIg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "DIE TOTEN HOSEN" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/j09hpp3AxIE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD9AYFv29sGfmmdT8U1dqKUjY5ALw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/j09hpp3AxIE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBoVt_K_kR3Wqnu3uY-0CfIFsqI5g", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/j09hpp3AxIE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBgbwYa3tZQTVwDdmQmKXjK6R_tOg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/j09hpp3AxIE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCgKX0gdlgg-me5svwpGKOF0wSnhg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 32 seconds" + } + }, + "simpleText": "4:32" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Die Toten Hosen // „Tage wie diese\" [Offizielles Musikvideo] by DIE TOTEN HOSEN 10 years ago 4 minutes, 32 seconds" + } + }, + "runs": [ + { + "text": "Die Toten Hosen // „Tage wie diese\" [Offizielles Musikvideo]" + } + ] + }, + "trackingParams": "CIABEMY0GCsiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "videoId": "j09hpp3AxIE" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "143" + }, + "isPlayable": true, + "lengthSeconds": "200", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 20 seconds" + } + }, + "simpleText": "3:20" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CH8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CH8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "J3GN6JXjV3g" + ] + } + }, + "openMiniplayer": true, + "videoId": "J3GN6JXjV3g", + "videoIds": [ + "J3GN6JXjV3g" + ] + }, + "clickTrackingParams": "CH8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CH8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CH4QxjQYLCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CH4QxjQYLCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=J3GN6JXjV3g&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=143", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 142, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "J3GN6JXjV3g", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenle.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=27718de895e35778&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCorI9V6adKvuIYE7ey9HPQQ", + "canonicalBaseUrl": "/c/DigsterPop" + }, + "clickTrackingParams": "CH4QxjQYLCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/DigsterPop", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Digster Pop" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/J3GN6JXjV3g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB66Ro2vGeZvHM0dnqbT6HVGtuQNA", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/J3GN6JXjV3g/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLChuTf_62NHpRM1pHpWqPF0PTRrkQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/J3GN6JXjV3g/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDUt6y_GA5SDhXp2PSA9vFkHh4zxA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/J3GN6JXjV3g/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD073aeCaiK-BeCkeKAbhBlsH3efw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 20 seconds" + } + }, + "simpleText": "3:20" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Wincent Weiss - Frische Luft by Digster Pop 5 years ago 3 minutes, 20 seconds" + } + }, + "runs": [ + { + "text": "Wincent Weiss - Frische Luft" + } + ] + }, + "trackingParams": "CH4QxjQYLCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "J3GN6JXjV3g" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "144" + }, + "isPlayable": true, + "lengthSeconds": "240", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes" + } + }, + "simpleText": "4:00" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CH0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CH0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "pULl-p02upM" + ] + } + }, + "openMiniplayer": true, + "videoId": "pULl-p02upM", + "videoIds": [ + "pULl-p02upM" + ] + }, + "clickTrackingParams": "CH0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CH0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CHwQxjQYLSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CHwQxjQYLSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=pULl-p02upM&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=144", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 143, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "pULl-p02upM", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jelnes.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=a542e5fa9d36ba93&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCppb1MUh0f5CSRGiae_LnUg", + "canonicalBaseUrl": "/channel/UCppb1MUh0f5CSRGiae_LnUg" + }, + "clickTrackingParams": "CHwQxjQYLSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCppb1MUh0f5CSRGiae_LnUg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Eunique" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/pULl-p02upM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAjH5lXg2mtjBxznFQpauBgpZ6S5g", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/pULl-p02upM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDMU-ELlxEmVaSmFT-2I00DehmJUg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/pULl-p02upM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDa-VQPJ4BRVXaGbFGsw9v4F7yCLg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/pULl-p02upM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCcEvofW-6YGxRzEpCauBhESXgYnw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes" + } + }, + "simpleText": "4:00" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Eunique ► CHECK (feat. Xatar) ◄ music by Lucry / prod. by Michael Jackson [Official Video] by Eunique 4 years ago 4 minutes" + } + }, + "runs": [ + { + "text": "Eunique ► CHECK (feat. Xatar) ◄ music by Lucry / prod. by Michael Jackson [Official Video]" + } + ] + }, + "trackingParams": "CHwQxjQYLSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "pULl-p02upM" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "145" + }, + "isPlayable": true, + "lengthSeconds": "210", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 30 seconds" + } + }, + "simpleText": "3:30" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "O6By8JeCtQQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "O6By8JeCtQQ", + "videoIds": [ + "O6By8JeCtQQ" + ] + }, + "clickTrackingParams": "CHsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CHsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CHoQxjQYLiITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CHoQxjQYLiITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=O6By8JeCtQQ&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=145", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 144, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "O6By8JeCtQQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jelne7.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=3ba072f09782b504&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGU9EqK5V5m141sNPCOfRBg", + "canonicalBaseUrl": "/c/TEAMKUKU" + }, + "clickTrackingParams": "CHoQxjQYLiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/TEAMKUKU", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "TEAM KUKU" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/O6By8JeCtQQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBeEDlx_Qtv47nY5CUFqHFv3eJAJQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/O6By8JeCtQQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD9XtlB8ut2iILOVLd3M0rIzhIUmA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/O6By8JeCtQQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD4y-pw1KBn0TWF9209HxAQNIY2nA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/O6By8JeCtQQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDePCzXlWlEhuM8LN6WDPsjXufiZA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 30 seconds" + } + }, + "simpleText": "3:30" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "KING KHALIL FT. CELO & ABDI - ALLES RICHTIG SO (PROD.BY THE CRATEZ) by TEAM KUKU 4 years ago 3 minutes, 30 seconds" + } + }, + "runs": [ + { + "text": "KING KHALIL FT. CELO & ABDI - ALLES RICHTIG SO (PROD.BY THE CRATEZ)" + } + ] + }, + "trackingParams": "CHoQxjQYLiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "O6By8JeCtQQ" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "146" + }, + "isPlayable": true, + "lengthSeconds": "228", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 48 seconds" + } + }, + "simpleText": "3:48" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "NGn3IYQ7M7E" + ] + } + }, + "openMiniplayer": true, + "videoId": "NGn3IYQ7M7E", + "videoIds": [ + "NGn3IYQ7M7E" + ] + }, + "clickTrackingParams": "CHkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CHkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CHgQxjQYLyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CHgQxjQYLyITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=NGn3IYQ7M7E&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=146", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 145, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "NGn3IYQ7M7E", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jeenl6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=3469f721843b33b1&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCVWm9bTQLmMwHI0To5zQFGA", + "canonicalBaseUrl": "/channel/UCVWm9bTQLmMwHI0To5zQFGA" + }, + "clickTrackingParams": "CHgQxjQYLyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCVWm9bTQLmMwHI0To5zQFGA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Luciano | Locosquad" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/NGn3IYQ7M7E/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB52YZY551SNIySzi-d8PMMx5p4qA", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/NGn3IYQ7M7E/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDDCvYKjoVly2kAhrhrYRg7hVBlDg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/NGn3IYQ7M7E/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDp2-6UoAxdt53NXq78ZpqFTZagRA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/NGn3IYQ7M7E/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCXw0EQ0nmeV6J9rwL2X_Syz1xsww", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 48 seconds" + } + }, + "simpleText": "3:48" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "LUCIANO - VORANKOMMEN (prod. by Chryziz Beats) by Luciano | Locosquad 4 years ago 3 minutes, 48 seconds" + } + }, + "runs": [ + { + "text": "LUCIANO - VORANKOMMEN (prod. by Chryziz Beats)" + } + ] + }, + "trackingParams": "CHgQxjQYLyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "NGn3IYQ7M7E" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "147" + }, + "isPlayable": true, + "lengthSeconds": "166", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 46 seconds" + } + }, + "simpleText": "2:46" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "o43oI5x86dI" + ] + } + }, + "openMiniplayer": true, + "videoId": "o43oI5x86dI", + "videoIds": [ + "o43oI5x86dI" + ] + }, + "clickTrackingParams": "CHcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CHcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CHYQxjQYMCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CHYQxjQYMCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=o43oI5x86dI&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=147", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 146, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "o43oI5x86dI", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=a38de8239c7ce9d2&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGh8tmH9x9njaI2mXfh2fyg", + "canonicalBaseUrl": "/user/CrhymeTV" + }, + "clickTrackingParams": "CHYQxjQYMCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/user/CrhymeTV", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "CrhymeTV" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/o43oI5x86dI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDeGB5wc8URrV5zjwsfhU2-lAd2Bg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/o43oI5x86dI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBNtFNGR5wigKm9UuQ7aob3tZRl-A", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/o43oI5x86dI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBMYDaAcm-sitD3162nkda25nL6MQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/o43oI5x86dI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA2k8bNzUtef-BB9-_9ilOhn1DkAA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 46 seconds" + } + }, + "simpleText": "2:46" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Gzuz feat. LX- Schnapp! (prod. P.M.B.) by CrhymeTV 8 years ago 2 minutes, 46 seconds" + } + }, + "runs": [ + { + "text": "Gzuz feat. LX- Schnapp! (prod. P.M.B.)" + } + ] + }, + "trackingParams": "CHYQxjQYMCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "o43oI5x86dI" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "148" + }, + "isPlayable": true, + "lengthSeconds": "197", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 17 seconds" + } + }, + "simpleText": "3:17" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "7TNqUrINxzs" + ] + } + }, + "openMiniplayer": true, + "videoId": "7TNqUrINxzs", + "videoIds": [ + "7TNqUrINxzs" + ] + }, + "clickTrackingParams": "CHUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CHUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CHQQxjQYMSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CHQQxjQYMSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=7TNqUrINxzs&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=148", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 147, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "7TNqUrINxzs", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeln7e.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=ed336a52b20dc73b&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChgBqZLsIzN4gKSLfKoavEQ", + "canonicalBaseUrl": "/c/43tv" + }, + "clickTrackingParams": "CHQQxjQYMSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/43tv", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "43 TV" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/7TNqUrINxzs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDGpJi_1puIgwODMepICvhX3qrmvw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/7TNqUrINxzs/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDBAWRSI7-fmh4ZH1Bt-lPsTdqd3g", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/7TNqUrINxzs/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC6_7cINuLKG9gOnTWNwNgeD4CvVA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/7TNqUrINxzs/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDUGswCcwmnKC1uiPQvi8XVqE_4Gw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 17 seconds" + } + }, + "simpleText": "3:17" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Veysel - Besser als 50 Cent (OFFICIAL HD VIDEO) prod. by Fonty by 43 TV 5 years ago 3 minutes, 17 seconds" + } + }, + "runs": [ + { + "text": "Veysel - Besser als 50 Cent (OFFICIAL HD VIDEO) prod. by Fonty" + } + ] + }, + "trackingParams": "CHQQxjQYMSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "7TNqUrINxzs" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "149" + }, + "isPlayable": true, + "lengthSeconds": "231", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 51 seconds" + } + }, + "simpleText": "3:51" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "f3BD5Zm3cp0" + ] + } + }, + "openMiniplayer": true, + "videoId": "f3BD5Zm3cp0", + "videoIds": [ + "f3BD5Zm3cp0" + ] + }, + "clickTrackingParams": "CHMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CHMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CHIQxjQYMiITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CHIQxjQYMiITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=f3BD5Zm3cp0&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=149", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 148, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "f3BD5Zm3cp0", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeln7l.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=7f7043e599b7729d&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGh8tmH9x9njaI2mXfh2fyg", + "canonicalBaseUrl": "/user/CrhymeTV" + }, + "clickTrackingParams": "CHIQxjQYMiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/user/CrhymeTV", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "CrhymeTV" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/f3BD5Zm3cp0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDrTx5VwXz29kwhWDvtUqUsMl832Q", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/f3BD5Zm3cp0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgPUym7Sk2juqtgjzoF8fK5u2OQw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/f3BD5Zm3cp0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAVQBAAluiG7-3pxvOGxY4WLKj81g", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/f3BD5Zm3cp0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC8so0sOygWVySuZvJGZ7M_mUhtqg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 51 seconds" + } + }, + "simpleText": "3:51" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "BONEZ MC & RAF CAMORA - PALMEN AUS GOLD by CrhymeTV 5 years ago 3 minutes, 51 seconds" + } + }, + "runs": [ + { + "text": "BONEZ MC & RAF CAMORA - PALMEN AUS GOLD" + } + ] + }, + "trackingParams": "CHIQxjQYMiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "f3BD5Zm3cp0" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "150" + }, + "isPlayable": true, + "lengthSeconds": "203", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 23 seconds" + } + }, + "simpleText": "3:23" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "sF4yTDp95Eo" + ] + } + }, + "openMiniplayer": true, + "videoId": "sF4yTDp95Eo", + "videoIds": [ + "sF4yTDp95Eo" + ] + }, + "clickTrackingParams": "CHEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CHEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CHAQxjQYMyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CHAQxjQYMyITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=sF4yTDp95Eo&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=150", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 149, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "sF4yTDp95Eo", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=b05e324c3a7de44a&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC0udgVvsJRuH4WfuIuRPSiw", + "canonicalBaseUrl": "/channel/UC0udgVvsJRuH4WfuIuRPSiw" + }, + "clickTrackingParams": "CHAQxjQYMyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC0udgVvsJRuH4WfuIuRPSiw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "YONII OFFICIAL" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/sF4yTDp95Eo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBvg9CIthGa9KJrDHLjeZjkDegElw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/sF4yTDp95Eo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDNrqHszy-mQ1ZKNVZtSOjX6CVCbw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/sF4yTDp95Eo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAAzx1IUi2RqUEbQT5c9hiSTYvYRA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/sF4yTDp95Eo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA3SFYtaHpwBsZgD01aZxwOGN0qag", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 23 seconds" + } + }, + "simpleText": "3:23" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "YONII - LAMPEDUSA prod. by LUCRY (Official 4K Video) by YONII OFFICIAL 4 years ago 3 minutes, 23 seconds" + } + }, + "runs": [ + { + "text": "YONII - LAMPEDUSA prod. by LUCRY (Official 4K Video)" + } + ] + }, + "trackingParams": "CHAQxjQYMyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "sF4yTDp95Eo" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "151" + }, + "isPlayable": true, + "lengthSeconds": "224", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 44 seconds" + } + }, + "simpleText": "3:44" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CG8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CG8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "1EwLNHg6ejY" + ] + } + }, + "openMiniplayer": true, + "videoId": "1EwLNHg6ejY", + "videoIds": [ + "1EwLNHg6ejY" + ] + }, + "clickTrackingParams": "CG8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CG8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CG4QxjQYNCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CG4QxjQYNCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=1EwLNHg6ejY&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=151", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 150, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "1EwLNHg6ejY", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jeenle.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=d44c0b34783a7a36&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC8C5H2N06dasx3ZYYbAa0mQ", + "canonicalBaseUrl": "/channel/UC8C5H2N06dasx3ZYYbAa0mQ" + }, + "clickTrackingParams": "CG4QxjQYNCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC8C5H2N06dasx3ZYYbAa0mQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Mert Abi" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/1EwLNHg6ejY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBxADlCvmeGhe-SPNkvZcVQk7wu4g", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/1EwLNHg6ejY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCgkkeXo9F6pwClN82vaxcSGEr9Rg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/1EwLNHg6ejY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDelQQo1iLDvAkTnuc0_vsXDxQAVw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/1EwLNHg6ejY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAM4nRVYrhPwrkex40YGl2u-nfskw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 44 seconds" + } + }, + "simpleText": "3:44" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Mert ft. SOOLKING - AJAJAJ (prod. by ARIBEATZ) by Mert Abi 5 years ago 3 minutes, 44 seconds" + } + }, + "runs": [ + { + "text": "Mert ft. SOOLKING - AJAJAJ (prod. by ARIBEATZ)" + } + ] + }, + "trackingParams": "CG4QxjQYNCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "1EwLNHg6ejY" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "152" + }, + "isPlayable": true, + "lengthSeconds": "287", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 47 seconds" + } + }, + "simpleText": "4:47" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CG0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CG0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "-l75qaSDWe8" + ] + } + }, + "openMiniplayer": true, + "videoId": "-l75qaSDWe8", + "videoIds": [ + "-l75qaSDWe8" + ] + }, + "clickTrackingParams": "CG0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CG0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CGwQxjQYNSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CGwQxjQYNSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=-l75qaSDWe8&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=152", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 151, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "-l75qaSDWe8", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeln7l.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=fa5ef9a9a48359ef&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC6j8VYM3rsQkx3-22Cg5ZUg", + "canonicalBaseUrl": "/channel/UC6j8VYM3rsQkx3-22Cg5ZUg" + }, + "clickTrackingParams": "CGwQxjQYNSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UC6j8VYM3rsQkx3-22Cg5ZUg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "SXTN" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/-l75qaSDWe8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCMJGvaVHhQX1wQsr-3Kd2djDVIRQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/-l75qaSDWe8/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC8wjzexE2vm0Q-4w08Lfo0WrN45w", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/-l75qaSDWe8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAbbuG6moLuVHHrS7Xz5IJkStKbtw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/-l75qaSDWe8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC7BD5u46QSBz9dazR8IxrgXrMCxg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 47 seconds" + } + }, + "simpleText": "4:47" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "SXTN - Bongzimmer (Official Video) by SXTN 5 years ago 4 minutes, 47 seconds" + } + }, + "runs": [ + { + "text": "SXTN - Bongzimmer (Official Video)" + } + ] + }, + "trackingParams": "CGwQxjQYNSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "-l75qaSDWe8" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "153" + }, + "isPlayable": true, + "lengthSeconds": "223", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 43 seconds" + } + }, + "simpleText": "3:43" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "7h7ntYLLrfQ" + ] + } + }, + "openMiniplayer": true, + "videoId": "7h7ntYLLrfQ", + "videoIds": [ + "7h7ntYLLrfQ" + ] + }, + "clickTrackingParams": "CGsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CGsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CGoQxjQYNiITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CGoQxjQYNiITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=7h7ntYLLrfQ&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=153", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 152, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "7h7ntYLLrfQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jelne6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=ee1ee7b582cbadf4&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCLyAYe-pk6HGmfyT94ouBcA", + "canonicalBaseUrl": "/channel/UCLyAYe-pk6HGmfyT94ouBcA" + }, + "clickTrackingParams": "CGoQxjQYNiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCLyAYe-pk6HGmfyT94ouBcA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Mark Forster" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/7h7ntYLLrfQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAtAzQLSNQvigkTqhdfBgz8WSOyTA", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/7h7ntYLLrfQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAL1s14MBkqNw35AuoQz2D5T9K9LA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/7h7ntYLLrfQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBlkMO-kWtfl3PVtnVrJHchOcpeFw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/7h7ntYLLrfQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLALsUNSuTe_BCDdAHLA3FiiWvmSow", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 43 seconds" + } + }, + "simpleText": "3:43" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Mark Forster - Kogong by Mark Forster 5 years ago 3 minutes, 43 seconds" + } + }, + "runs": [ + { + "text": "Mark Forster - Kogong" + } + ] + }, + "trackingParams": "CGoQxjQYNiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "7h7ntYLLrfQ" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "154" + }, + "isPlayable": true, + "lengthSeconds": "179", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 59 seconds" + } + }, + "simpleText": "2:59" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "ApUl3Ops69M" + ] + } + }, + "openMiniplayer": true, + "videoId": "ApUl3Ops69M", + "videoIds": [ + "ApUl3Ops69M" + ] + }, + "clickTrackingParams": "CGkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CGkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CGgQxjQYNyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CGgQxjQYNyITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ApUl3Ops69M&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=154", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 153, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "ApUl3Ops69M", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeln7l.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=029525dcea6cebd3&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCDLPHv0SrvyUzct8UYQ9R_g", + "canonicalBaseUrl": "/c/KMNGANG" + }, + "clickTrackingParams": "CGgQxjQYNyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/KMNGANG", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "KMNGANG" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/ApUl3Ops69M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDb2436I_Kp7y4gMe6w7nh_DN0F2Q", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/ApUl3Ops69M/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCxdCibsB26fKYqmW935fCEeDiz6w", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/ApUl3Ops69M/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAbuFzP6z55UhSNj8dbhHjAxvCL5A", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/ApUl3Ops69M/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAverCYnN4trpm2aQMBrJ7zUTs6OA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 59 seconds" + } + }, + "simpleText": "2:59" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "AZET - FAST LIFE (prod. by m3) #KMNSTREET VOL. 1 by KMNGANG 6 years ago 2 minutes, 59 seconds" + } + }, + "runs": [ + { + "text": "AZET - FAST LIFE (prod. by m3) #KMNSTREET VOL. 1" + } + ] + }, + "trackingParams": "CGgQxjQYNyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "ApUl3Ops69M" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "155" + }, + "isPlayable": true, + "lengthSeconds": "152", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 32 seconds" + } + }, + "simpleText": "2:32" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "2YcJ8Wightw" + ] + } + }, + "openMiniplayer": true, + "videoId": "2YcJ8Wightw", + "videoIds": [ + "2YcJ8Wightw" + ] + }, + "clickTrackingParams": "CGcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CGcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CGYQxjQYOCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CGYQxjQYOCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=2YcJ8Wightw&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=155", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 154, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "2YcJ8Wightw", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jelne7.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=d98709f168a086dc&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGh8tmH9x9njaI2mXfh2fyg", + "canonicalBaseUrl": "/user/CrhymeTV" + }, + "clickTrackingParams": "CGYQxjQYOCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/user/CrhymeTV", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "CrhymeTV" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/2YcJ8Wightw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBafY_AaRX5vaAIfpdctKTL8ZbUqQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/2YcJ8Wightw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD5ofjFtnV_WFEpdcUIrA_dqavbzA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/2YcJ8Wightw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBKqs83Mks536ox1N0Lm4zyC5OMSw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/2YcJ8Wightw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDOCPqu_-YWqcCrbynJDunYTmOgUQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 32 seconds" + } + }, + "simpleText": "2:32" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "GZUZ - CL500 (Jambeatz) by CrhymeTV 7 years ago 2 minutes, 32 seconds" + } + }, + "runs": [ + { + "text": "GZUZ - CL500 (Jambeatz)" + } + ] + }, + "trackingParams": "CGYQxjQYOCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "2YcJ8Wightw" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "156" + }, + "isPlayable": true, + "lengthSeconds": "236", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 56 seconds" + } + }, + "simpleText": "3:56" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "W3q8Od5qJio" + ] + } + }, + "openMiniplayer": true, + "videoId": "W3q8Od5qJio", + "videoIds": [ + "W3q8Od5qJio" + ] + }, + "clickTrackingParams": "CGUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CGUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CGQQxjQYOSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CGQQxjQYOSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=W3q8Od5qJio&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=156", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 155, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "W3q8Od5qJio", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jeenle.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=5b7abc39de6a262a&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCYp3rk70ACGXQ4gFAiMr1SQ", + "canonicalBaseUrl": "/channel/UCYp3rk70ACGXQ4gFAiMr1SQ" + }, + "clickTrackingParams": "CGQQxjQYOSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCYp3rk70ACGXQ4gFAiMr1SQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Rammstein Official" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/W3q8Od5qJio/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy8BHWAiUz5cUmZdLkDTTIS7w5bA", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/W3q8Od5qJio/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB6KPKUyxG8CFrG6VRIYmSwAG1hVQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/W3q8Od5qJio/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCJfB3AA7iXPAhLJxx3AIOZqlhZMQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/W3q8Od5qJio/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAWP3F-KJTcX2jCq6h0wuj_z0IxIg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 56 seconds" + } + }, + "simpleText": "3:56" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Rammstein - Du Hast (Official Video) by Rammstein Official 7 years ago 3 minutes, 56 seconds" + } + }, + "runs": [ + { + "text": "Rammstein - Du Hast (Official Video)" + } + ] + }, + "trackingParams": "CGQQxjQYOSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "W3q8Od5qJio" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "157" + }, + "isPlayable": true, + "lengthSeconds": "268", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 28 seconds" + } + }, + "simpleText": "4:28" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "WPFLAjmWCtk" + ] + } + }, + "openMiniplayer": true, + "videoId": "WPFLAjmWCtk", + "videoIds": [ + "WPFLAjmWCtk" + ] + }, + "clickTrackingParams": "CGMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CGMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CGIQxjQYOiITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CGIQxjQYOiITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=WPFLAjmWCtk&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=157", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 156, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "WPFLAjmWCtk", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeenld.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=58f14b0239960ad9&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChl3h_bqcx_c15f7WOtSn-A", + "canonicalBaseUrl": "/channel/UChl3h_bqcx_c15f7WOtSn-A" + }, + "clickTrackingParams": "CGIQxjQYOiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChl3h_bqcx_c15f7WOtSn-A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Sido" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/WPFLAjmWCtk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBA6n25WXYSKiK6KbfsZk-monR1BQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/WPFLAjmWCtk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA1SbB4pIUQ4OTXJRdeFXTYh6lrDQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/WPFLAjmWCtk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAwKJXoLpelP1QCWpPYQlZKpivtow", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/WPFLAjmWCtk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAxqmZJUln9VAnXr46-H0e0XyrCug", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 28 seconds" + } + }, + "simpleText": "4:28" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "SIDO - Astronaut (feat. Andreas Bourani) OFFICIAL VIDEO by Sido 7 years ago 4 minutes, 28 seconds" + } + }, + "runs": [ + { + "text": "SIDO - Astronaut (feat. Andreas Bourani) OFFICIAL VIDEO" + } + ] + }, + "trackingParams": "CGIQxjQYOiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "WPFLAjmWCtk" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "158" + }, + "isPlayable": true, + "lengthSeconds": "312", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "5 minutes, 12 seconds" + } + }, + "simpleText": "5:12" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "tC76tIp0kBk" + ] + } + }, + "openMiniplayer": true, + "videoId": "tC76tIp0kBk", + "videoIds": [ + "tC76tIp0kBk" + ] + }, + "clickTrackingParams": "CGEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CGEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CGAQxjQYOyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CGAQxjQYOyITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=tC76tIp0kBk&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=158", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 157, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "tC76tIp0kBk", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jelnes.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=b42efab48a749019&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCeXXPfmDyQFJVB-6_Kl04sg", + "canonicalBaseUrl": "/c/STOKEDMusicOfficial" + }, + "clickTrackingParams": "CGAQxjQYOyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/STOKEDMusicOfficial", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "STOKED Music" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/tC76tIp0kBk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBCSXdft-cKXNbKDFWX-UBvjgjeOQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/tC76tIp0kBk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCxd9kc9329HY_KJc4Sr1ULTULKZg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/tC76tIp0kBk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAHaM9N-cXkD-bpg7yCg0GlnezdEw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/tC76tIp0kBk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOotD_L08R0C5yEqAJBaVp9vvsbA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "5 minutes, 12 seconds" + } + }, + "simpleText": "5:12" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "MoTrip - So wie du bist (feat. Lary) by STOKED Music 7 years ago 5 minutes, 12 seconds" + } + }, + "runs": [ + { + "text": "MoTrip - So wie du bist (feat. Lary)" + } + ] + }, + "trackingParams": "CGAQxjQYOyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "tC76tIp0kBk" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "159" + }, + "isPlayable": true, + "lengthSeconds": "230", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 50 seconds" + } + }, + "simpleText": "3:50" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CF8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CF8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "kiMG_JV2gbo" + ] + } + }, + "openMiniplayer": true, + "videoId": "kiMG_JV2gbo", + "videoIds": [ + "kiMG_JV2gbo" + ] + }, + "clickTrackingParams": "CF8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CF8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CF4QxjQYPCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CF4QxjQYPCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=kiMG_JV2gbo&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=159", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 158, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "kiMG_JV2gbo", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jelnez.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=922306fc957681ba&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog", + "canonicalBaseUrl": "/channel/UCSRCm4zHuETCS7jHWMiWNog" + }, + "clickTrackingParams": "CF4QxjQYPCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCSRCm4zHuETCS7jHWMiWNog", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adel Tawil" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/kiMG_JV2gbo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDuETow7IpKT30ZdSsh-9L6ns1Uww", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/kiMG_JV2gbo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgMoqRgXn7pJHxlaVvfT0cuzogBA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/kiMG_JV2gbo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDfVPpS7QQlQLpXm66v0OkwLl-mYw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/kiMG_JV2gbo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCAf4lZHLNpV0Q7WYnrSGxnoRa_Eg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 50 seconds" + } + }, + "simpleText": "3:50" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Adel Tawil \"Lieder\" (Official Lyrics Video) by Adel Tawil 8 years ago 3 minutes, 50 seconds" + } + }, + "runs": [ + { + "text": "Adel Tawil \"Lieder\" (Official Lyrics Video)" + } + ] + }, + "trackingParams": "CF4QxjQYPCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "kiMG_JV2gbo" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "160" + }, + "isPlayable": true, + "lengthSeconds": "231", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 51 seconds" + } + }, + "simpleText": "3:51" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CF0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CF0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "CrYYg_atdtk" + ] + } + }, + "openMiniplayer": true, + "videoId": "CrYYg_atdtk", + "videoIds": [ + "CrYYg_atdtk" + ] + }, + "clickTrackingParams": "CF0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CF0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CFwQxjQYPSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CFwQxjQYPSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=CrYYg_atdtk&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=160", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 159, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "CrYYg_atdtk", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelne7.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=0ab61883f6ad76d9&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCicJjripVxiTXbUfociVZwQ", + "canonicalBaseUrl": "/c/marteria" + }, + "clickTrackingParams": "CFwQxjQYPSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/marteria", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "MARTERIA" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/CrYYg_atdtk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB_8mGL48FutWtNIFldaMsVmhlhnw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/CrYYg_atdtk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC1XfSKRQQHyh_fMsK2MXE6NiLHgg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/CrYYg_atdtk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDDKUL4e0Igh1xacfSqCvuiexlHxw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/CrYYg_atdtk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCoTVROjGNhh8fjfLZgnyKa5-8xBA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 51 seconds" + } + }, + "simpleText": "3:51" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Marteria, Yasha, Miss Platnum - Lila Wolken (Official Video) by MARTERIA 10 years ago 3 minutes, 51 seconds" + } + }, + "runs": [ + { + "text": "Marteria, Yasha, Miss Platnum - Lila Wolken (Official Video)" + } + ] + }, + "trackingParams": "CFwQxjQYPSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "CrYYg_atdtk" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "161" + }, + "isPlayable": true, + "lengthSeconds": "299", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 59 seconds" + } + }, + "simpleText": "4:59" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "XTPGpBBwt1w" + ] + } + }, + "openMiniplayer": true, + "videoId": "XTPGpBBwt1w", + "videoIds": [ + "XTPGpBBwt1w" + ] + }, + "clickTrackingParams": "CFsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CFsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CFoQxjQYPiITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CFoQxjQYPiITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=XTPGpBBwt1w&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=161", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 160, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "XTPGpBBwt1w", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jeened.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=5d33c6a41070b75c&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCy9Nbtsu7QzefrNsT9nYkzQ", + "canonicalBaseUrl": "/channel/UCy9Nbtsu7QzefrNsT9nYkzQ" + }, + "clickTrackingParams": "CFoQxjQYPiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCy9Nbtsu7QzefrNsT9nYkzQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "K.I.Z" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/XTPGpBBwt1w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAcYXhOsrGetd_0wuibgBFV7YBnIg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/XTPGpBBwt1w/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCoW4-qiDzeTCvkOJi_6NEsWN3BDg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/XTPGpBBwt1w/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDvamrOXtP_i8N6x_tTuxBiLosXfQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/XTPGpBBwt1w/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBFaeTxfvLQ70K-hKGGu64rZiv7VQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 59 seconds" + } + }, + "simpleText": "4:59" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "K.I.Z. - Hurra die Welt geht unter ft. Henning May (Official Video) by K.I.Z 7 years ago 4 minutes, 59 seconds" + } + }, + "runs": [ + { + "text": "K.I.Z. - Hurra die Welt geht unter ft. Henning May (Official Video)" + } + ] + }, + "trackingParams": "CFoQxjQYPiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "XTPGpBBwt1w" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "162" + }, + "isPlayable": true, + "lengthSeconds": "257", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 17 seconds" + } + }, + "simpleText": "4:17" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "uC08L4xxjNM" + ] + } + }, + "openMiniplayer": true, + "videoId": "uC08L4xxjNM", + "videoIds": [ + "uC08L4xxjNM" + ] + }, + "clickTrackingParams": "CFkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CFkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CFgQxjQYPyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CFgQxjQYPyITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=uC08L4xxjNM&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=162", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 161, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "uC08L4xxjNM", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jelne7.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=b82d3c2f8c718cd3&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCZygMGbIE8JNE1_qqtmIXhA", + "canonicalBaseUrl": "/channel/UCZygMGbIE8JNE1_qqtmIXhA" + }, + "clickTrackingParams": "CFgQxjQYPyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCZygMGbIE8JNE1_qqtmIXhA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Max Giesinger" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/uC08L4xxjNM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAOc-MPZ_rsmax81mL3f8AgLsX90Q", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/uC08L4xxjNM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDyMQ57Ob-g2-ttuAWjd1KM9qUJQw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/uC08L4xxjNM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDvh0TuJoX6KTcHBlCioz_lKWzPkg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/uC08L4xxjNM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDlBiTiqVUxkw-Fgu-NXHPkJZkH1w", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 17 seconds" + } + }, + "simpleText": "4:17" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Max Giesinger - 80 Millionen (Offizielles Video) by Max Giesinger 6 years ago 4 minutes, 17 seconds" + } + }, + "runs": [ + { + "text": "Max Giesinger - 80 Millionen (Offizielles Video)" + } + ] + }, + "trackingParams": "CFgQxjQYPyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "uC08L4xxjNM" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "163" + }, + "isPlayable": true, + "lengthSeconds": "257", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 17 seconds" + } + }, + "simpleText": "4:17" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "5fAoV_AAMf0" + ] + } + }, + "openMiniplayer": true, + "videoId": "5fAoV_AAMf0", + "videoIds": [ + "5fAoV_AAMf0" + ] + }, + "clickTrackingParams": "CFcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CFcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CFYQxjQYQCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CFYQxjQYQCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=5fAoV_AAMf0&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=163", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 162, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "5fAoV_AAMf0", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jelne6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=e5f02857f00031fd&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCLyAYe-pk6HGmfyT94ouBcA", + "canonicalBaseUrl": "/channel/UCLyAYe-pk6HGmfyT94ouBcA" + }, + "clickTrackingParams": "CFYQxjQYQCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCLyAYe-pk6HGmfyT94ouBcA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Mark Forster" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/5fAoV_AAMf0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDfOpErDWIsYZ61_NlNduG5z2W5Cg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/5fAoV_AAMf0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA0Sz_QbrRwaF6ZH4zhN-KEHJuA7w", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/5fAoV_AAMf0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDbSBt8PyK_J7dRHihyyKck4lBFPA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/5fAoV_AAMf0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDId9r9ezc4eHh9wq-WF_ebhOtCPw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 17 seconds" + } + }, + "simpleText": "4:17" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Mark Forster - Bauch und Kopf (Videoclip) by Mark Forster 7 years ago 4 minutes, 17 seconds" + } + }, + "runs": [ + { + "text": "Mark Forster - Bauch und Kopf (Videoclip)" + } + ] + }, + "trackingParams": "CFYQxjQYQCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "5fAoV_AAMf0" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "164" + }, + "isPlayable": true, + "lengthSeconds": "202", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 22 seconds" + } + }, + "simpleText": "3:22" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "u5Vz7obL460" + ] + } + }, + "openMiniplayer": true, + "videoId": "u5Vz7obL460", + "videoIds": [ + "u5Vz7obL460" + ] + }, + "clickTrackingParams": "CFUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CFUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CFQQxjQYQSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CFQQxjQYQSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=u5Vz7obL460&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=164", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 163, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "u5Vz7obL460", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jeln7e.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=bb9573ee86cbe3ad&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGexINHKQhnkwmMaympciYQ", + "canonicalBaseUrl": "/channel/UCGexINHKQhnkwmMaympciYQ" + }, + "clickTrackingParams": "CFQQxjQYQSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCGexINHKQhnkwmMaympciYQ", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Tim Bendzko" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/u5Vz7obL460/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBBUhjoBjfVBzy7k9bgwicb4in_wQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/u5Vz7obL460/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAlOQ6jKtwyqi23kK-xDfvtPIS2FA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/u5Vz7obL460/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAGsQd4aym_klv6mbs4H2ZlpQivMw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/u5Vz7obL460/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAHcirsr7eVve_M--FkOKQMsrmpMg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 22 seconds" + } + }, + "simpleText": "3:22" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Tim Bendzko - Keine Maschine (Offizielles Video) by Tim Bendzko 6 years ago 3 minutes, 22 seconds" + } + }, + "runs": [ + { + "text": "Tim Bendzko - Keine Maschine (Offizielles Video)" + } + ] + }, + "trackingParams": "CFQQxjQYQSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "u5Vz7obL460" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "165" + }, + "isPlayable": true, + "lengthSeconds": "189", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 9 seconds" + } + }, + "simpleText": "3:09" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "ZPJlyRv_IGI" + ] + } + }, + "openMiniplayer": true, + "videoId": "ZPJlyRv_IGI", + "videoIds": [ + "ZPJlyRv_IGI" + ] + }, + "clickTrackingParams": "CFMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CFMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CFIQxjQYQiITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CFIQxjQYQiITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ZPJlyRv_IGI&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=165", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 164, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "ZPJlyRv_IGI", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=64f265c91bff2062&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCT7MCko43YqeZ1x55O1DRtw", + "canonicalBaseUrl": "/channel/UCT7MCko43YqeZ1x55O1DRtw" + }, + "clickTrackingParams": "CFIQxjQYQiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCT7MCko43YqeZ1x55O1DRtw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "deichkindTV" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/ZPJlyRv_IGI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-VCnGYvXMSkYOdKLReH9Dlt8G_A", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/ZPJlyRv_IGI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDx3-52kBAq42Ml5ii2kzro4SddEw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/ZPJlyRv_IGI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA0UkCccWJ39n-zOI7_MJ2E70A93g", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/ZPJlyRv_IGI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCriEeGUvlt167aWvm4S85eKNge3A", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 9 seconds" + } + }, + "simpleText": "3:09" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Deichkind - Leider Geil (Official Video) by deichkindTV 10 years ago 3 minutes, 9 seconds" + } + }, + "runs": [ + { + "text": "Deichkind - Leider Geil (Official Video)" + } + ] + }, + "trackingParams": "CFIQxjQYQiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "ZPJlyRv_IGI" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "166" + }, + "isPlayable": true, + "lengthSeconds": "172", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 52 seconds" + } + }, + "simpleText": "2:52" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "s2SLbln-JwE" + ] + } + }, + "openMiniplayer": true, + "videoId": "s2SLbln-JwE", + "videoIds": [ + "s2SLbln-JwE" + ] + }, + "clickTrackingParams": "CFEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CFEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CFAQxjQYQyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CFAQxjQYQyITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=s2SLbln-JwE&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=166", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 165, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "s2SLbln-JwE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenl6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=b3648b6e59fe2701&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCqsyOBd31LT-EwwqiSBKxSA", + "canonicalBaseUrl": "/c/popoutMusik" + }, + "clickTrackingParams": "CFAQxjQYQyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/popoutMusik", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "pop-out Musik" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/s2SLbln-JwE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDURk566C-Rh1vwMamXVandCsnDvQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/s2SLbln-JwE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCj0LYVSPtFOs3k-VBN2ydK0OjqYA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/s2SLbln-JwE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAUbbNiYKOamcyXbN75E3J48IWpfA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/s2SLbln-JwE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLALI7CIeS2ihuVQa99T8VJriVE31Q", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 52 seconds" + } + }, + "simpleText": "2:52" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "BIBI & TINA \" Jungs gegen Mädchen - MÄDCHEN GEGEN JUNGS - Das offizielle Video! by pop-out Musik 6 years ago 2 minutes, 52 seconds" + } + }, + "runs": [ + { + "text": "BIBI & TINA \" Jungs gegen Mädchen - MÄDCHEN GEGEN JUNGS - Das offizielle Video!" + } + ] + }, + "trackingParams": "CFAQxjQYQyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "s2SLbln-JwE" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "167" + }, + "isPlayable": true, + "lengthSeconds": "206", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 26 seconds" + } + }, + "simpleText": "3:26" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CE8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CE8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "28xHtRw6pG8" + ] + } + }, + "openMiniplayer": true, + "videoId": "28xHtRw6pG8", + "videoIds": [ + "28xHtRw6pG8" + ] + }, + "clickTrackingParams": "CE8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CE8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CE4QxjQYRCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CE4QxjQYRCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=28xHtRw6pG8&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=167", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 166, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "28xHtRw6pG8", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenle.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=dbcc47b51c3aa46f&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCDLPHv0SrvyUzct8UYQ9R_g", + "canonicalBaseUrl": "/c/KMNGANG" + }, + "clickTrackingParams": "CE4QxjQYRCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/KMNGANG", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "KMNGANG" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/28xHtRw6pG8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAZB8XpsXloeCqWZpyZt8YNvV2IxQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/28xHtRw6pG8/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLByGHZTW-56b-68ykLlGVm3fqMgKA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/28xHtRw6pG8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAWm5FxDbxYAuYs-bRC6nswuazk2Q", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/28xHtRw6pG8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDqTMpQ2SJKWMVJLccpClzjf5LEfg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 26 seconds" + } + }, + "simpleText": "3:26" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "AZET - PATTE FLIESST prod. by LUCRY #KMNSTREET VOL. 5 by KMNGANG 5 years ago 3 minutes, 26 seconds" + } + }, + "runs": [ + { + "text": "AZET - PATTE FLIESST prod. by LUCRY #KMNSTREET VOL. 5" + } + ] + }, + "trackingParams": "CE4QxjQYRCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "28xHtRw6pG8" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "168" + }, + "isPlayable": true, + "lengthSeconds": "204", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 24 seconds" + } + }, + "simpleText": "3:24" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CE0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CE0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "joWoKqUTRvc" + ] + } + }, + "openMiniplayer": true, + "videoId": "joWoKqUTRvc", + "videoIds": [ + "joWoKqUTRvc" + ] + }, + "clickTrackingParams": "CE0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CE0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CEwQxjQYRSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CEwQxjQYRSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=joWoKqUTRvc&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=168", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 167, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "joWoKqUTRvc", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelne6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=8e85a82aa51346f7&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbDNCzgdLlvYY9dk5M8063A", + "canonicalBaseUrl": "/c/BangerChannel" + }, + "clickTrackingParams": "CEwQxjQYRSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/BangerChannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "BangerChannel" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/joWoKqUTRvc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDAwlxydPxzE_jwb1rNbqmjdMEEoQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/joWoKqUTRvc/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYdFy7yZNP3yyiU6YmizSbc9NS4Q", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/joWoKqUTRvc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDRGF2lfTmr5to2ycGViYF1p2Deuw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/joWoKqUTRvc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOMKJIbXEbKP6p020aS5Y6g0yUOw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 24 seconds" + } + }, + "simpleText": "3:24" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "KC Rebell ► ALLES & NICHTS ◄ [ official Video ] by BangerChannel 7 years ago 3 minutes, 24 seconds" + } + }, + "runs": [ + { + "text": "KC Rebell ► ALLES & NICHTS ◄ [ official Video ]" + } + ] + }, + "trackingParams": "CEwQxjQYRSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "joWoKqUTRvc" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "169" + }, + "isPlayable": true, + "lengthSeconds": "236", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 56 seconds" + } + }, + "simpleText": "3:56" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "XNMFTqhcNrE" + ] + } + }, + "openMiniplayer": true, + "videoId": "XNMFTqhcNrE", + "videoIds": [ + "XNMFTqhcNrE" + ] + }, + "clickTrackingParams": "CEsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CEsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CEoQxjQYRiITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CEoQxjQYRiITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=XNMFTqhcNrE&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=169", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 168, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "XNMFTqhcNrE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelne7.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=5cd3054ea85c36b1&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCLyAYe-pk6HGmfyT94ouBcA", + "canonicalBaseUrl": "/channel/UCLyAYe-pk6HGmfyT94ouBcA" + }, + "clickTrackingParams": "CEoQxjQYRiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCLyAYe-pk6HGmfyT94ouBcA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Mark Forster" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/XNMFTqhcNrE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBTr_B4ekTBT9hupTStE4MOf52PVw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/XNMFTqhcNrE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBOb_mlHN11ZM6gjN5Cs1DfuNJqqA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/XNMFTqhcNrE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCHdzgKixy4dteQkMdsgV6Sp2Reaw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/XNMFTqhcNrE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB07YyJvm-AqiXzZ56bhK-oeJX2JQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 56 seconds" + } + }, + "simpleText": "3:56" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Mark Forster - Flash mich (Videoclip) by Mark Forster 7 years ago 3 minutes, 56 seconds" + } + }, + "runs": [ + { + "text": "Mark Forster - Flash mich (Videoclip)" + } + ] + }, + "trackingParams": "CEoQxjQYRiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "XNMFTqhcNrE" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "170" + }, + "isPlayable": true, + "lengthSeconds": "260", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 20 seconds" + } + }, + "simpleText": "4:20" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "v3vPLgJ9FX8" + ] + } + }, + "openMiniplayer": true, + "videoId": "v3vPLgJ9FX8", + "videoIds": [ + "v3vPLgJ9FX8" + ] + }, + "clickTrackingParams": "CEkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CEkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CEgQxjQYRyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CEgQxjQYRyITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=v3vPLgJ9FX8&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=170", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 169, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "v3vPLgJ9FX8", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=bf7bcf2e027d157f&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCorI9V6adKvuIYE7ey9HPQQ", + "canonicalBaseUrl": "/c/DigsterPop" + }, + "clickTrackingParams": "CEgQxjQYRyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/DigsterPop", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Digster Pop" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/v3vPLgJ9FX8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA_hmNsTwTENDy4Bjh6gh__yW3GIQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/v3vPLgJ9FX8/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCFdmnJuEDwpOHr3KbAMRnNiRvcCw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/v3vPLgJ9FX8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCB4QCoMRrqZz_pMGWTbx53L2Y4iQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/v3vPLgJ9FX8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD0-N0Qt6W2wWnNDhwE1CqsdNiRCQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 20 seconds" + } + }, + "simpleText": "4:20" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Cheat Codes - Sex (Official Video) by Digster Pop 6 years ago 4 minutes, 20 seconds" + } + }, + "runs": [ + { + "text": "Cheat Codes - Sex (Official Video)" + } + ] + }, + "trackingParams": "CEgQxjQYRyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "v3vPLgJ9FX8" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "171" + }, + "isPlayable": true, + "lengthSeconds": "213", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 33 seconds" + } + }, + "simpleText": "3:33" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "UFXOd179kOA" + ] + } + }, + "openMiniplayer": true, + "videoId": "UFXOd179kOA", + "videoIds": [ + "UFXOd179kOA" + ] + }, + "clickTrackingParams": "CEcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CEcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CEYQxjQYSCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CEYQxjQYSCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=UFXOd179kOA&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=171", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 170, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "UFXOd179kOA", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jeln7e.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=5055ce775efd90e0&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGh8tmH9x9njaI2mXfh2fyg", + "canonicalBaseUrl": "/user/CrhymeTV" + }, + "clickTrackingParams": "CEYQxjQYSCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/user/CrhymeTV", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "CrhymeTV" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/UFXOd179kOA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-tY05WssNwj08bjU_P1qVrXP3Ag", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/UFXOd179kOA/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCSxsqrHWJ1s6IbZnximV8Hh4buMg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/UFXOd179kOA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCqVBIJtpI50z3UnSkNmU4Hi22Uxg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/UFXOd179kOA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAUdSTfnPotVexE_VQlhcC1Yrm8tQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 33 seconds" + } + }, + "simpleText": "3:33" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "GZUZ - EBBE & FLUT (mit Xatar & Hanybal) by CrhymeTV 7 years ago 3 minutes, 33 seconds" + } + }, + "runs": [ + { + "text": "GZUZ - EBBE & FLUT (mit Xatar & Hanybal)" + } + ] + }, + "trackingParams": "CEYQxjQYSCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "UFXOd179kOA" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "172" + }, + "isPlayable": true, + "lengthSeconds": "206", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 26 seconds" + } + }, + "simpleText": "3:26" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "4xRsDnKgHZc" + ] + } + }, + "openMiniplayer": true, + "videoId": "4xRsDnKgHZc", + "videoIds": [ + "4xRsDnKgHZc" + ] + }, + "clickTrackingParams": "CEUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CEUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CEQQxjQYSSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CEQQxjQYSSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=4xRsDnKgHZc&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=172", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 171, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "4xRsDnKgHZc", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=e3146c0e72a01d97&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCDLPHv0SrvyUzct8UYQ9R_g", + "canonicalBaseUrl": "/c/KMNGANG" + }, + "clickTrackingParams": "CEQQxjQYSSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/KMNGANG", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "KMNGANG" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/4xRsDnKgHZc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD2YQRMQrDjFZXKHm-HPOKNZY-kmw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/4xRsDnKgHZc/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCMV3cXzrg0dDviaEUv64tmd_-zfg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/4xRsDnKgHZc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCfP0mBjn0ShUJ41_pgbK0l7g9_MA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/4xRsDnKgHZc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCtQUyoYbOqcpjuQOmNQs8vsYfcdQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 26 seconds" + } + }, + "simpleText": "3:26" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "ZUNA feat. NIMO - HOL MIR DEIN COUSIN (Official 4K Video) by KMNGANG 6 years ago 3 minutes, 26 seconds" + } + }, + "runs": [ + { + "text": "ZUNA feat. NIMO - HOL MIR DEIN COUSIN (Official 4K Video)" + } + ] + }, + "trackingParams": "CEQQxjQYSSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "4xRsDnKgHZc" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "173" + }, + "isPlayable": true, + "lengthSeconds": "211", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 31 seconds" + } + }, + "simpleText": "3:31" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "mE3IjoEqMqY" + ] + } + }, + "openMiniplayer": true, + "videoId": "mE3IjoEqMqY", + "videoIds": [ + "mE3IjoEqMqY" + ] + }, + "clickTrackingParams": "CEMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CEMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CEIQxjQYSiITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CEIQxjQYSiITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=mE3IjoEqMqY&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=173", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 172, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "mE3IjoEqMqY", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=984dc88e812a32a6&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCnH4k3ASwytYAgfsW83OvTg", + "canonicalBaseUrl": "/c/Azzlackz" + }, + "clickTrackingParams": "CEIQxjQYSiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/Azzlackz", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Azzlackz" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/mE3IjoEqMqY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLARArW0ieGDVRQ4Qhp8JWepnfeDtg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/mE3IjoEqMqY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDISme6LUIVxd926q2h1sKr0IR6Dg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/mE3IjoEqMqY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBJEEEtA9CAVUImBmynrbtuPovYfg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/mE3IjoEqMqY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDNp1KqFQu5CWcimfAcAoZFBmltHg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 31 seconds" + } + }, + "simpleText": "3:31" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Hanybal - VANILLA SKY mit Nimo (prod. von Lucry) [Official 4K Video] by Azzlackz 6 years ago 3 minutes, 31 seconds" + } + }, + "runs": [ + { + "text": "Hanybal - VANILLA SKY mit Nimo (prod. von Lucry) [Official 4K Video]" + } + ] + }, + "trackingParams": "CEIQxjQYSiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "mE3IjoEqMqY" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "174" + }, + "isPlayable": true, + "lengthSeconds": "195", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 15 seconds" + } + }, + "simpleText": "3:15" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "E7e5vxKerqA" + ] + } + }, + "openMiniplayer": true, + "videoId": "E7e5vxKerqA", + "videoIds": [ + "E7e5vxKerqA" + ] + }, + "clickTrackingParams": "CEEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CEEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CEAQxjQYSyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CEAQxjQYSyITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=E7e5vxKerqA&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=174", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 173, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "E7e5vxKerqA", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeenle.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=13b7b9bf129eaea0&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCqv9TYpXUAo-Qy_tOPPSUYg", + "canonicalBaseUrl": "/c/HypnotizeEntertainment" + }, + "clickTrackingParams": "CEAQxjQYSyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/HypnotizeEntertainment", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Hypnotize Entertainment" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/E7e5vxKerqA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYmNJ23r8Y5wE4xpfNz2ms6i3omw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/E7e5vxKerqA/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDyBEWHv4eWRJ5c8SaT6APgEt7tsQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/E7e5vxKerqA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAU8nd7t-mD9P2pqUllCZ6ZyVqhKw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/E7e5vxKerqA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB214eeOABXYb4pv0LZsGjlWTufOw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 15 seconds" + } + }, + "simpleText": "3:15" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "DARDAN FT. ENO - WER MACHT PARA? (Official Video) by Hypnotize Entertainment 6 years ago 3 minutes, 15 seconds" + } + }, + "runs": [ + { + "text": "DARDAN FT. ENO - WER MACHT PARA? (Official Video)" + } + ] + }, + "trackingParams": "CEAQxjQYSyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "E7e5vxKerqA" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "175" + }, + "isPlayable": true, + "lengthSeconds": "210", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 30 seconds" + } + }, + "simpleText": "3:30" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CD8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CD8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "axmZ_5Rx4Go" + ] + } + }, + "openMiniplayer": true, + "videoId": "axmZ_5Rx4Go", + "videoIds": [ + "axmZ_5Rx4Go" + ] + }, + "clickTrackingParams": "CD8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CD8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CD4QxjQYTCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CD4QxjQYTCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=axmZ_5Rx4Go&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=175", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 174, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "axmZ_5Rx4Go", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeener.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=6b1999ff9471e06a&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCSRCm4zHuETCS7jHWMiWNog", + "canonicalBaseUrl": "/channel/UCSRCm4zHuETCS7jHWMiWNog" + }, + "clickTrackingParams": "CD4QxjQYTCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCSRCm4zHuETCS7jHWMiWNog", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Adel Tawil" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/axmZ_5Rx4Go/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDh0E0WIHz_QeECpxh9OcCQgP80Tw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/axmZ_5Rx4Go/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCU9Dy7l9OuqkQa_qALB9clpQR2hg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/axmZ_5Rx4Go/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLByjwa1up0v2EOteR749rQlgOtSkg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/axmZ_5Rx4Go/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDnzqkrMrtaDfJgBTpeXVlAhJjp_w", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 30 seconds" + } + }, + "simpleText": "3:30" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Adel Tawil \"Zuhause\" (Official Music Video) by Adel Tawil 8 years ago 3 minutes, 30 seconds" + } + }, + "runs": [ + { + "text": "Adel Tawil \"Zuhause\" (Official Music Video)" + } + ] + }, + "trackingParams": "CD4QxjQYTCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "axmZ_5Rx4Go" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "176" + }, + "isPlayable": true, + "lengthSeconds": "279", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 39 seconds" + } + }, + "simpleText": "4:39" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CD0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CD0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "44Ig6BsOCYA" + ] + } + }, + "openMiniplayer": true, + "videoId": "44Ig6BsOCYA", + "videoIds": [ + "44Ig6BsOCYA" + ] + }, + "clickTrackingParams": "CD0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CD0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CDwQxjQYTSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CDwQxjQYTSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=44Ig6BsOCYA&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=176", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 175, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "44Ig6BsOCYA", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeenld.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=e38220e81b0e0980&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCvnCXuh_zhm75EJ89qJ95Kw", + "canonicalBaseUrl": "/c/385ideal" + }, + "clickTrackingParams": "CDwQxjQYTSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/385ideal", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "385idéal" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/44Ig6BsOCYA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDAwH-0B_Aadbi2O9ba4EJUr3kyCA", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/44Ig6BsOCYA/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDFm0-HZJplSq6ajysNaDJnLf8Skw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/44Ig6BsOCYA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCYfzxCneIrbK2K6exRkv2BkpACyA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/44Ig6BsOCYA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBRY1YKUgSi9O2Zy-TKToPdwTd8VA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 39 seconds" + } + }, + "simpleText": "4:39" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Olexesh - PURPLE HAZE (Offizielles Video) by 385idéal 8 years ago 4 minutes, 39 seconds" + } + }, + "runs": [ + { + "text": "Olexesh - PURPLE HAZE (Offizielles Video)" + } + ] + }, + "trackingParams": "CDwQxjQYTSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "44Ig6BsOCYA" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "177" + }, + "isPlayable": true, + "lengthSeconds": "242", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 2 seconds" + } + }, + "simpleText": "4:02" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "3iLBFEJjdN0" + ] + } + }, + "openMiniplayer": true, + "videoId": "3iLBFEJjdN0", + "videoIds": [ + "3iLBFEJjdN0" + ] + }, + "clickTrackingParams": "CDsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CDsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CDoQxjQYTiITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CDoQxjQYTiITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=3iLBFEJjdN0&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=177", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 176, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "3iLBFEJjdN0", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeln7l.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=de22c114426374dd&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChl3h_bqcx_c15f7WOtSn-A", + "canonicalBaseUrl": "/channel/UChl3h_bqcx_c15f7WOtSn-A" + }, + "clickTrackingParams": "CDoQxjQYTiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChl3h_bqcx_c15f7WOtSn-A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Sido" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/3iLBFEJjdN0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA2pjLj4MppP5puOVVw960xZHlEZQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/3iLBFEJjdN0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB3jmO1P61K0DyiquTLwwzZPa-klw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/3iLBFEJjdN0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB748MZul1DjMIf8xs2umCAwTRpdQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/3iLBFEJjdN0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA94Pt89BYfQZCXPRDUu-pySiogRQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 2 seconds" + } + }, + "simpleText": "4:02" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "SIDO - Löwenzahn feat. Olexesh (prod. by DJ Desue & x-plosive) by Sido 7 years ago 4 minutes, 2 seconds" + } + }, + "runs": [ + { + "text": "SIDO - Löwenzahn feat. Olexesh (prod. by DJ Desue & x-plosive)" + } + ] + }, + "trackingParams": "CDoQxjQYTiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "3iLBFEJjdN0" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "178" + }, + "isPlayable": true, + "lengthSeconds": "233", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 53 seconds" + } + }, + "simpleText": "3:53" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "M-ncq2eHF_k" + ] + } + }, + "openMiniplayer": true, + "videoId": "M-ncq2eHF_k", + "videoIds": [ + "M-ncq2eHF_k" + ] + }, + "clickTrackingParams": "CDkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CDkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CDgQxjQYTyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CDgQxjQYTyITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=M-ncq2eHF_k&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=178", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 177, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "M-ncq2eHF_k", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=33e9dcab678717f9&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC8OZsdWmGCM-vojiQmtUK8g", + "canonicalBaseUrl": "/c/groenlandrecords" + }, + "clickTrackingParams": "CDgQxjQYTyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/groenlandrecords", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "groenlandrecords" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/M-ncq2eHF_k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDbtYmxd63hnsRbe3Sgr6IEtxaKXg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/M-ncq2eHF_k/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDrLPBKWmCzI0zHFAMGq4b4zE-Lzw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/M-ncq2eHF_k/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDJTW2qqZPF0SQuLhcQOG0ZtfQRYA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/M-ncq2eHF_k/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCj3wbDOlchsRjnjNBTNN_fQCnfjg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 53 seconds" + } + }, + "simpleText": "3:53" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Philipp Poisel - Ich will nur (Offizielles Video) by groenlandrecords 9 years ago 3 minutes, 53 seconds" + } + }, + "runs": [ + { + "text": "Philipp Poisel - Ich will nur (Offizielles Video)" + } + ] + }, + "trackingParams": "CDgQxjQYTyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "M-ncq2eHF_k" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "179" + }, + "isPlayable": true, + "lengthSeconds": "215", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 35 seconds" + } + }, + "simpleText": "3:35" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "-AJoJ-ggiKI" + ] + } + }, + "openMiniplayer": true, + "videoId": "-AJoJ-ggiKI", + "videoIds": [ + "-AJoJ-ggiKI" + ] + }, + "clickTrackingParams": "CDcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CDcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CDYQxjQYUCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CDYQxjQYUCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=-AJoJ-ggiKI&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=179", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 178, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "-AJoJ-ggiKI", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeened.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=f8026827e82088a2&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGh8tmH9x9njaI2mXfh2fyg", + "canonicalBaseUrl": "/user/CrhymeTV" + }, + "clickTrackingParams": "CDYQxjQYUCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/user/CrhymeTV", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "CrhymeTV" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/-AJoJ-ggiKI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDcSPvvf03RP2Q6cd3h3G2Zz42XMQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/-AJoJ-ggiKI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDk4OfQ_aikPeX9jsDRfnGmTcs6LQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/-AJoJ-ggiKI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDbNdI9J2b6GaiJdfkUVbU1bL5kwA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/-AJoJ-ggiKI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBIis7Jw2IVt77jrJx9awCb3Rb86w", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 35 seconds" + } + }, + "simpleText": "3:35" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "LX & Maxwell feat. Gzuz - HaifischNikez (Jambeatz) by CrhymeTV 7 years ago 3 minutes, 35 seconds" + } + }, + "runs": [ + { + "text": "LX & Maxwell feat. Gzuz - HaifischNikez (Jambeatz)" + } + ] + }, + "trackingParams": "CDYQxjQYUCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "-AJoJ-ggiKI" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "180" + }, + "isPlayable": true, + "lengthSeconds": "191", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 11 seconds" + } + }, + "simpleText": "3:11" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "cgb-zp9DDHg" + ] + } + }, + "openMiniplayer": true, + "videoId": "cgb-zp9DDHg", + "videoIds": [ + "cgb-zp9DDHg" + ] + }, + "clickTrackingParams": "CDUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CDUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CDQQxjQYUSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CDQQxjQYUSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=cgb-zp9DDHg&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=180", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 179, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "cgb-zp9DDHg", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=7206fece9f430c78&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCMHWpfahk3Kt8Us28Jg51nw", + "canonicalBaseUrl": "/channel/UCMHWpfahk3Kt8Us28Jg51nw" + }, + "clickTrackingParams": "CDQQxjQYUSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCMHWpfahk3Kt8Us28Jg51nw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "BUSHIDO" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/cgb-zp9DDHg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBoszXFG4nQrodmF7kDKDCpBahWnQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/cgb-zp9DDHg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCfm0jXvH07Zwpe3TClTKlHaboN6w", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/cgb-zp9DDHg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCBHPmY9MtaBTdJAVI_-jYFaX55BA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/cgb-zp9DDHg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDeCgbZHAuuT7LWZmje0LVx2deppg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 11 seconds" + } + }, + "simpleText": "3:11" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Bushido X Shindy - Brot brechen by BUSHIDO 6 years ago 3 minutes, 11 seconds" + } + }, + "runs": [ + { + "text": "Bushido X Shindy - Brot brechen" + } + ] + }, + "trackingParams": "CDQQxjQYUSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "cgb-zp9DDHg" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "181" + }, + "isPlayable": true, + "lengthSeconds": "407", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "6 minutes, 47 seconds" + } + }, + "simpleText": "6:47" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "Q7ZXg3KQLt0" + ] + } + }, + "openMiniplayer": true, + "videoId": "Q7ZXg3KQLt0", + "videoIds": [ + "Q7ZXg3KQLt0" + ] + }, + "clickTrackingParams": "CDMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CDMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CDIQxjQYUiITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CDIQxjQYUiITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=Q7ZXg3KQLt0&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=181", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 180, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "Q7ZXg3KQLt0", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenl6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=43b6578372902edd&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCDzpxJB1oNEg7a2Np14TEMQ", + "canonicalBaseUrl": "/c/selfmaderecords" + }, + "clickTrackingParams": "CDIQxjQYUiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/selfmaderecords", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Selfmade Records" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/Q7ZXg3KQLt0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCntzPVc1exjqTv4dMIRNj9l_fPFA", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/Q7ZXg3KQLt0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDkobJgb1KbJFFg6J7cT8Pt2TyZvA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/Q7ZXg3KQLt0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBfyGwOliBxPWtQmvYgAEX4HXN-4A", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/Q7ZXg3KQLt0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBoQeT0IPy8JomsL0mP43wRIOqThA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "6 minutes, 47 seconds" + } + }, + "simpleText": "6:47" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "KOLLEGAH - Genozid (prod. von B-Case & Alexis Troy) (Official HD Video) by Selfmade Records 6 years ago 6 minutes, 47 seconds" + } + }, + "runs": [ + { + "text": "KOLLEGAH - Genozid (prod. von B-Case & Alexis Troy) (Official HD Video)" + } + ] + }, + "trackingParams": "CDIQxjQYUiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "Q7ZXg3KQLt0" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "182" + }, + "isPlayable": true, + "lengthSeconds": "207", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 27 seconds" + } + }, + "simpleText": "3:27" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "ysAEZOwp5rM" + ] + } + }, + "openMiniplayer": true, + "videoId": "ysAEZOwp5rM", + "videoIds": [ + "ysAEZOwp5rM" + ] + }, + "clickTrackingParams": "CDEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CDEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CDAQxjQYUyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CDAQxjQYUyITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=ysAEZOwp5rM&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=182", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 181, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "ysAEZOwp5rM", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jelnez.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=cac00464ec29e6b3&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCDzpxJB1oNEg7a2Np14TEMQ", + "canonicalBaseUrl": "/c/selfmaderecords" + }, + "clickTrackingParams": "CDAQxjQYUyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/selfmaderecords", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Selfmade Records" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/ysAEZOwp5rM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAq4pm6ReaUxi45Ao_rQqFb-zTDqQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/ysAEZOwp5rM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBjdP8a65p0TSycdRVALvl9YMOJpw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/ysAEZOwp5rM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC_KKhBboprOBn5jL5qXkovGg7zQQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/ysAEZOwp5rM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBXTTkyWxHzFuWPfTR_NwpNb7x4uw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 27 seconds" + } + }, + "simpleText": "3:27" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "KOLLEGAH - John Gotti (prod. von Alexis Troy) (Official HD Video) by Selfmade Records 6 years ago 3 minutes, 27 seconds" + } + }, + "runs": [ + { + "text": "KOLLEGAH - John Gotti (prod. von Alexis Troy) (Official HD Video)" + } + ] + }, + "trackingParams": "CDAQxjQYUyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "ysAEZOwp5rM" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "183" + }, + "isPlayable": true, + "lengthSeconds": "282", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 42 seconds" + } + }, + "simpleText": "4:42" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CC8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CC8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "m5vfng33SVE" + ] + } + }, + "openMiniplayer": true, + "videoId": "m5vfng33SVE", + "videoIds": [ + "m5vfng33SVE" + ] + }, + "clickTrackingParams": "CC8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CC8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CC4QxjQYVCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CC4QxjQYVCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=m5vfng33SVE&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=183", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 182, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "m5vfng33SVE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jelne6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=9b9bdf9e0df74951&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UC8OZsdWmGCM-vojiQmtUK8g", + "canonicalBaseUrl": "/c/groenlandrecords" + }, + "clickTrackingParams": "CC4QxjQYVCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/groenlandrecords", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "groenlandrecords" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/m5vfng33SVE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCy3rZ_vNJbHC6MPjBKfkH9OF4KxQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/m5vfng33SVE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBEckg-wRqsBH-EFRWzs2OVjRaf0Q", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/m5vfng33SVE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCeKgFTiQ4I4LKWlV8MU2senbZREg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/m5vfng33SVE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAX9GCt-OndxB1ualgcAbdGrkZ9wA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 42 seconds" + } + }, + "simpleText": "4:42" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Philipp Dittberner - Das ist dein Leben (Official Video) by groenlandrecords 7 years ago 4 minutes, 42 seconds" + } + }, + "runs": [ + { + "text": "Philipp Dittberner - Das ist dein Leben (Official Video)" + } + ] + }, + "trackingParams": "CC4QxjQYVCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "m5vfng33SVE" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "184" + }, + "isPlayable": true, + "lengthSeconds": "1622", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 2 seconds" + } + }, + "simpleText": "27:02" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CC0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CC0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "yMfgjVlGbUE" + ] + } + }, + "openMiniplayer": true, + "videoId": "yMfgjVlGbUE", + "videoIds": [ + "yMfgjVlGbUE" + ] + }, + "clickTrackingParams": "CC0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CC0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CCwQxjQYVSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CCwQxjQYVSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=yMfgjVlGbUE&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=184", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 183, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "yMfgjVlGbUE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelnez.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=c8c7e08d59466d41&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCx0XFgJ2OIESkkTjG4S7Gvw", + "canonicalBaseUrl": "/channel/UCx0XFgJ2OIESkkTjG4S7Gvw" + }, + "clickTrackingParams": "CCwQxjQYVSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCx0XFgJ2OIESkkTjG4S7Gvw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "SpongeBOZZ" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/yMfgjVlGbUE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCImbZOtOhsu1n5GRh-mVYWhoCNGA", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/yMfgjVlGbUE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDYzNO27OatJw_k2XJsmT3ldeNexg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/yMfgjVlGbUE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDaMLvXVf8bXvo1FNTviE4l7dRgjg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/yMfgjVlGbUE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD6_EY2x1j_LXaGR98e-9afWMXzRQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 2 seconds" + } + }, + "simpleText": "27:02" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "SpongeBOZZ - SFTB/Apocalyptic Infinity/Payback #forsundiego (Prod. by Digital Drama) by SpongeBOZZ 5 years ago 27 minutes" + } + }, + "runs": [ + { + "text": "SpongeBOZZ - SFTB/Apocalyptic Infinity/Payback #forsundiego (Prod. by Digital Drama)" + } + ] + }, + "trackingParams": "CCwQxjQYVSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "yMfgjVlGbUE" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "185" + }, + "isPlayable": true, + "lengthSeconds": "262", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 22 seconds" + } + }, + "simpleText": "4:22" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "OQIYEPe6DWY" + ] + } + }, + "openMiniplayer": true, + "videoId": "OQIYEPe6DWY", + "videoIds": [ + "OQIYEPe6DWY" + ] + }, + "clickTrackingParams": "CCsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CCsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CCoQxjQYViITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CCoQxjQYViITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=OQIYEPe6DWY&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=185", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 184, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "OQIYEPe6DWY", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=39021810f7ba0d66&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCg9Mw2YNnXqrecKl4bKLVCQ", + "canonicalBaseUrl": "/user/80smusicfanman" + }, + "clickTrackingParams": "CCoQxjQYViITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/user/80smusicfanman", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "80smusicfanman" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/OQIYEPe6DWY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDcpI8_iSbWLFjaRFSoXae9jGhSkQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/OQIYEPe6DWY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5LsjnP1Hoqdxw8cRvlinjeyr6Uw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/OQIYEPe6DWY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCns2u7YcbS4N9LivclqJxmW2ltUw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/OQIYEPe6DWY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAVjSbp-Sh-zb2YDl0mNbXygzoIUg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 22 seconds" + } + }, + "simpleText": "4:22" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Kraftwerk - Das Model by 80smusicfanman 13 years ago 4 minutes, 22 seconds" + } + }, + "runs": [ + { + "text": "Kraftwerk - Das Model" + } + ] + }, + "trackingParams": "CCoQxjQYViITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "OQIYEPe6DWY" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "186" + }, + "isPlayable": true, + "lengthSeconds": "303", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "5 minutes, 3 seconds" + } + }, + "simpleText": "5:03" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "5FS8RIH7BpI" + ] + } + }, + "openMiniplayer": true, + "videoId": "5FS8RIH7BpI", + "videoIds": [ + "5FS8RIH7BpI" + ] + }, + "clickTrackingParams": "CCkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CCkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CCgQxjQYVyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CCgQxjQYVyITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=5FS8RIH7BpI&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=186", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 185, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "5FS8RIH7BpI", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeener.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=e454bc4481fb0692&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCDzpxJB1oNEg7a2Np14TEMQ", + "canonicalBaseUrl": "/c/selfmaderecords" + }, + "clickTrackingParams": "CCgQxjQYVyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/selfmaderecords", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Selfmade Records" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/5FS8RIH7BpI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAuSraLlm5j-ap1h2ePrD79sxdoNQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/5FS8RIH7BpI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC_CZk9yCOXLIodqUNuB-z6j_n17A", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/5FS8RIH7BpI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDkdlyZ-KBjE1uosqR7nciamAthSg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/5FS8RIH7BpI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCfhkbMyci0J0_cSm0mWa8XX4drAw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "5 minutes, 3 seconds" + } + }, + "simpleText": "5:03" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "GENETIKK - Wünsch dir was (Official HD Video) by Selfmade Records 7 years ago 5 minutes, 3 seconds" + } + }, + "runs": [ + { + "text": "GENETIKK - Wünsch dir was (Official HD Video)" + } + ] + }, + "trackingParams": "CCgQxjQYVyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "5FS8RIH7BpI" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "187" + }, + "isPlayable": true, + "lengthSeconds": "256", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 16 seconds" + } + }, + "simpleText": "4:16" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "zSRKgFB9piY" + ] + } + }, + "openMiniplayer": true, + "videoId": "zSRKgFB9piY", + "videoIds": [ + "zSRKgFB9piY" + ] + }, + "clickTrackingParams": "CCcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CCcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CCYQxjQYWCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CCYQxjQYWCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=zSRKgFB9piY&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=187", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 186, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "zSRKgFB9piY", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelne7.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=cd244a80507da626&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCu-Ue0vTWyMbM2KBPaCCg_w", + "canonicalBaseUrl": "/channel/UCu-Ue0vTWyMbM2KBPaCCg_w" + }, + "clickTrackingParams": "CCYQxjQYWCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCu-Ue0vTWyMbM2KBPaCCg_w", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Joel Brandenstein" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/zSRKgFB9piY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAbaAoyp05Ae7eWUZvCAzFdRN6BMQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/zSRKgFB9piY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBRsTewgNIXUPfy9fvSljVWetlq5w", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/zSRKgFB9piY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCznDGOCeE-b3oZnaZI80epEegq6A", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/zSRKgFB9piY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBbq8PtwprgANkRm7fw7WlbUlJLuQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 16 seconds" + } + }, + "simpleText": "4:16" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Keine ist wie Du - Joel Brandenstein & Chrisoula Botsika ( Gregor Meyle Acoustic Cover ) by Joel Brandenstein 8 years ago 4 minutes, 16 seconds" + } + }, + "runs": [ + { + "text": "Keine ist wie Du - Joel Brandenstein & Chrisoula Botsika ( Gregor Meyle Acoustic Cover )" + } + ] + }, + "trackingParams": "CCYQxjQYWCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "zSRKgFB9piY" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "188" + }, + "isPlayable": true, + "lengthSeconds": "275", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 35 seconds" + } + }, + "simpleText": "4:35" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "e4eHhgwHCME" + ] + } + }, + "openMiniplayer": true, + "videoId": "e4eHhgwHCME", + "videoIds": [ + "e4eHhgwHCME" + ] + }, + "clickTrackingParams": "CCUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CCUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CCQQxjQYWSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CCQQxjQYWSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=e4eHhgwHCME&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=188", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 187, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "e4eHhgwHCME", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeln7l.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=7b8787860c0708c1&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCzmO7GegLke-jb5uZSQ9_HA", + "canonicalBaseUrl": "/c/AlphaMusicEmpire" + }, + "clickTrackingParams": "CCQQxjQYWSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/AlphaMusicEmpire", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "ALPHA MUSIC EMPIRE" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/e4eHhgwHCME/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDj3vRRbJlmnPr4rqKRkmZs-JIN7A", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/e4eHhgwHCME/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC3HZwDKNaGzIdIKUsTrC5-zs2hFQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/e4eHhgwHCME/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA7NCSA8pwZFT0MZ4jrqkoMaawDfg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/e4eHhgwHCME/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAdlZ-NEvydXmD6wgMAuNOS6KOjsg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 35 seconds" + } + }, + "simpleText": "4:35" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Kollegah & Farid Bang ✖️STURMMASKE AUF ✖️ [official video] by ALPHA MUSIC EMPIRE 5 years ago 4 minutes, 35 seconds" + } + }, + "runs": [ + { + "text": "Kollegah & Farid Bang ✖️STURMMASKE AUF ✖️ [official video]" + } + ] + }, + "trackingParams": "CCQQxjQYWSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "e4eHhgwHCME" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "189" + }, + "isPlayable": true, + "lengthSeconds": "222", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 42 seconds" + } + }, + "simpleText": "3:42" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "q3hZvho7jNk" + ] + } + }, + "openMiniplayer": true, + "videoId": "q3hZvho7jNk", + "videoIds": [ + "q3hZvho7jNk" + ] + }, + "clickTrackingParams": "CCMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CCMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CCIQxjQYWiITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CCIQxjQYWiITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=q3hZvho7jNk&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=189", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 188, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "q3hZvho7jNk", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jeened.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=ab7859be1a3b8cd9&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCbDNCzgdLlvYY9dk5M8063A", + "canonicalBaseUrl": "/c/BangerChannel" + }, + "clickTrackingParams": "CCIQxjQYWiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/BangerChannel", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "BangerChannel" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/q3hZvho7jNk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCLwp5luIJpaNOWk7bSXdYfTn0sBA", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/q3hZvho7jNk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC9wXX-GLF2eGdmQTuc-guxMH_yHQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/q3hZvho7jNk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAEzv8913yIHXmsXAlp9HIP-8uT8g", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/q3hZvho7jNk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBBB9AV4fam_JSiFlbqj_MIdHJ03A", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 42 seconds" + } + }, + "simpleText": "3:42" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "KC Rebell ✖️ PAPER ✖️ [ official Video ] GEE Futuristic, Nikki 3k & Joshimixu by BangerChannel 6 years ago 3 minutes, 42 seconds" + } + }, + "runs": [ + { + "text": "KC Rebell ✖️ PAPER ✖️ [ official Video ] GEE Futuristic, Nikki 3k & Joshimixu" + } + ] + }, + "trackingParams": "CCIQxjQYWiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "q3hZvho7jNk" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "190" + }, + "isPlayable": true, + "lengthSeconds": "191", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 11 seconds" + } + }, + "simpleText": "3:11" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "0nWysyj_Z4Y" + ] + } + }, + "openMiniplayer": true, + "videoId": "0nWysyj_Z4Y", + "videoIds": [ + "0nWysyj_Z4Y" + ] + }, + "clickTrackingParams": "CCEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CCEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CCAQxjQYWyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CCAQxjQYWyITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=0nWysyj_Z4Y&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=190", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 189, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "0nWysyj_Z4Y", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jeln7l.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=d275b2b328ff6786&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCvnCXuh_zhm75EJ89qJ95Kw", + "canonicalBaseUrl": "/c/385ideal" + }, + "clickTrackingParams": "CCAQxjQYWyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/385ideal", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "385idéal" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/0nWysyj_Z4Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDQGu4QNzr3EMjQcAiTkPrm3q60nQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/0nWysyj_Z4Y/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBnrlIOHO7NpLZzy-kOIAtRbBYBjw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/0nWysyj_Z4Y/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDU6Tds7tUNQ30l4lQHUypGPD9ffA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/0nWysyj_Z4Y/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCV-K9BCTu3aaqCSMvmVS4ATbwMGg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 11 seconds" + } + }, + "simpleText": "3:11" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Nimo - FLOUZ KOMMT FLOUZ GEHT (prod. von Jimmy Torrio) [Official 4K Video] by 385idéal 6 years ago 3 minutes, 11 seconds" + } + }, + "runs": [ + { + "text": "Nimo - FLOUZ KOMMT FLOUZ GEHT (prod. von Jimmy Torrio) [Official 4K Video]" + } + ] + }, + "trackingParams": "CCAQxjQYWyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "0nWysyj_Z4Y" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "191" + }, + "isPlayable": true, + "lengthSeconds": "218", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 38 seconds" + } + }, + "simpleText": "3:38" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CB8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CB8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "aGCcLWU0OVo" + ] + } + }, + "openMiniplayer": true, + "videoId": "aGCcLWU0OVo", + "videoIds": [ + "aGCcLWU0OVo" + ] + }, + "clickTrackingParams": "CB8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CB8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CB4QxjQYXCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CB4QxjQYXCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=aGCcLWU0OVo&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=191", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 190, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "aGCcLWU0OVo", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=68609c2d6534395a&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UChl3h_bqcx_c15f7WOtSn-A", + "canonicalBaseUrl": "/channel/UChl3h_bqcx_c15f7WOtSn-A" + }, + "clickTrackingParams": "CB4QxjQYXCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UChl3h_bqcx_c15f7WOtSn-A", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Sido" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/aGCcLWU0OVo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDArDAbvY0RsPSuJPBh4uyPYSr4Bw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/aGCcLWU0OVo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_UufznL5LUBgVwGkp2-XXw0Y83w", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/aGCcLWU0OVo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAdfU-xkZEt-pyn791B95BZgehDuA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/aGCcLWU0OVo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB3pjJLwqxbs5vgj1ReGHTTeR9AFA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 38 seconds" + } + }, + "simpleText": "3:38" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "SIDO - Gürtel am Arm by Sido 7 years ago 3 minutes, 38 seconds" + } + }, + "runs": [ + { + "text": "SIDO - Gürtel am Arm" + } + ] + }, + "trackingParams": "CB4QxjQYXCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "aGCcLWU0OVo" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "192" + }, + "isPlayable": true, + "lengthSeconds": "400", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "6 minutes, 40 seconds" + } + }, + "simpleText": "6:40" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CB0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CB0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "OQsXLK4MeEA" + ] + } + }, + "openMiniplayer": true, + "videoId": "OQsXLK4MeEA", + "videoIds": [ + "OQsXLK4MeEA" + ] + }, + "clickTrackingParams": "CB0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CB0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CBwQxjQYXSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CBwQxjQYXSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=OQsXLK4MeEA&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=192", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 191, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "OQsXLK4MeEA", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenl6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=390b172cae0c7840&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCM8Eb--xiPqS8tR3z5FeXEw", + "canonicalBaseUrl": "/user/JuliensBlogBattle" + }, + "clickTrackingParams": "CBwQxjQYXSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/user/JuliensBlogBattle", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "JuliensBlogBattle" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/OQsXLK4MeEA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBZWiGbF4RrO7JLpICvTuC-eHpfuw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/OQsXLK4MeEA/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB4Y1U_BZ2Pstt31dgdE81ZCh-BIA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/OQsXLK4MeEA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAIvMW0seg_i18U0LGQc6nXOEg4ig", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/OQsXLK4MeEA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBHhlSA1DYt5RKfxpsJMOfltOfrRQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "6 minutes, 40 seconds" + } + }, + "simpleText": "6:40" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "JBB 2013 - SpongeBOZZ vs. Gio (Finale HR) prod. by Digital Drama by JuliensBlogBattle 9 years ago 6 minutes, 40 seconds" + } + }, + "runs": [ + { + "text": "JBB 2013 - SpongeBOZZ vs. Gio (Finale HR) prod. by Digital Drama" + } + ] + }, + "trackingParams": "CBwQxjQYXSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "OQsXLK4MeEA" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "193" + }, + "isPlayable": true, + "lengthSeconds": "272", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 32 seconds" + } + }, + "simpleText": "4:32" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CBsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "xm7dxIqOO2M" + ] + } + }, + "openMiniplayer": true, + "videoId": "xm7dxIqOO2M", + "videoIds": [ + "xm7dxIqOO2M" + ] + }, + "clickTrackingParams": "CBsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CBsQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CBoQxjQYXiITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CBoQxjQYXiITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=xm7dxIqOO2M&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=193", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 192, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "xm7dxIqOO2M", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelnes.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=c66eddc48a8e3b63&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCU8Xw_KewvcC3LV3Qv--JZg", + "canonicalBaseUrl": "/channel/UCU8Xw_KewvcC3LV3Qv--JZg" + }, + "clickTrackingParams": "CBoQxjQYXiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCU8Xw_KewvcC3LV3Qv--JZg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "KURDO" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/xm7dxIqOO2M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBxxl3-2dozhr306-FrORMGygKXoQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/xm7dxIqOO2M/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCBRkCIteBTNBEKdIG5GCvdH4tQiw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/xm7dxIqOO2M/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA6Iqbyw3_jDtzCH8DhVaZ8V9-lzQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/xm7dxIqOO2M/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDdleZZB5jUpW7FD6CZK4xDsu2grg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 32 seconds" + } + }, + "simpleText": "4:32" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "KURDO - Halbmond (prod. by Amir & Kostas) by KURDO 7 years ago 4 minutes, 32 seconds" + } + }, + "runs": [ + { + "text": "KURDO - Halbmond (prod. by Amir & Kostas)" + } + ] + }, + "trackingParams": "CBoQxjQYXiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "xm7dxIqOO2M" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "194" + }, + "isPlayable": true, + "lengthSeconds": "224", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 44 seconds" + } + }, + "simpleText": "3:44" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CBkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "jlaaByab4Zk" + ] + } + }, + "openMiniplayer": true, + "videoId": "jlaaByab4Zk", + "videoIds": [ + "jlaaByab4Zk" + ] + }, + "clickTrackingParams": "CBkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CBkQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CBgQxjQYXyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CBgQxjQYXyITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=jlaaByab4Zk&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=194", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 193, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "jlaaByab4Zk", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jeenl6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=8e569a07269be199&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCJQXmT0GmepGynjFJmRcTaA", + "canonicalBaseUrl": "/channel/UCJQXmT0GmepGynjFJmRcTaA" + }, + "clickTrackingParams": "CBgQxjQYXyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCJQXmT0GmepGynjFJmRcTaA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "yankoomusic" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/jlaaByab4Zk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBG5CJRj0SjU1Vm1l9EIGnWOG1mUQ", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/jlaaByab4Zk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBaooOhYrwkAiVs4ucNMNqa9dljPA", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/jlaaByab4Zk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDA2iUeh4wzmAqw6kgpv6WBbuvndA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/jlaaByab4Zk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDBOt4cbrgw9htY0Qak1WS6jJ-ggQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 44 seconds" + } + }, + "simpleText": "3:44" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Mc Yankoo feat. Milica Todorovic - Ljubi me budalo (official Video) by yankoomusic 5 years ago 3 minutes, 44 seconds" + } + }, + "runs": [ + { + "text": "Mc Yankoo feat. Milica Todorovic - Ljubi me budalo (official Video)" + } + ] + }, + "trackingParams": "CBgQxjQYXyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "jlaaByab4Zk" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "195" + }, + "isPlayable": true, + "lengthSeconds": "205", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 25 seconds" + } + }, + "simpleText": "3:25" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CBcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "KG9-jSqXz4U" + ] + } + }, + "openMiniplayer": true, + "videoId": "KG9-jSqXz4U", + "videoIds": [ + "KG9-jSqXz4U" + ] + }, + "clickTrackingParams": "CBcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CBcQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CBYQxjQYYCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CBYQxjQYYCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=KG9-jSqXz4U&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=195", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 194, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "KG9-jSqXz4U", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jelnez.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=286f7e8d2a97cf85&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCheky_SBEExtbK_T0onuDwg", + "canonicalBaseUrl": "/channel/UCheky_SBEExtbK_T0onuDwg" + }, + "clickTrackingParams": "CBYQxjQYYCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCheky_SBEExtbK_T0onuDwg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "AnnenMayKantereit" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/KG9-jSqXz4U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCdiXgKroQCc_4uA9cgiCKIDKbUYg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/KG9-jSqXz4U/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCPBt053pedFQpdQ6yssCj_O1vcWQ", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/KG9-jSqXz4U/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAroMOtiSETWFmaRS9wAY8itLCyoQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/KG9-jSqXz4U/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAJJMywZ3M3n95MtU9axUdUw4T3NA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 25 seconds" + } + }, + "simpleText": "3:25" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Oft Gefragt - AnnenMayKantereit (Official Video) by AnnenMayKantereit 8 years ago 3 minutes, 25 seconds" + } + }, + "runs": [ + { + "text": "Oft Gefragt - AnnenMayKantereit (Official Video)" + } + ] + }, + "trackingParams": "CBYQxjQYYCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "KG9-jSqXz4U" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "196" + }, + "isPlayable": true, + "lengthSeconds": "284", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 44 seconds" + } + }, + "simpleText": "4:44" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CBUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "7dISZnwsBSA" + ] + } + }, + "openMiniplayer": true, + "videoId": "7dISZnwsBSA", + "videoIds": [ + "7dISZnwsBSA" + ] + }, + "clickTrackingParams": "CBUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CBUQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CBQQxjQYYSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CBQQxjQYYSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=7dISZnwsBSA&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=196", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 195, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "7dISZnwsBSA", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeened.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=edd212667c2c0520&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCh-WV4-j8IAmfKiHJoc5Ecw", + "canonicalBaseUrl": "/c/keineliebe" + }, + "clickTrackingParams": "CBQQxjQYYSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/keineliebe", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Keine Liebe" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/7dISZnwsBSA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA2ZhuSJUc-O8GnUa12UH5Z08qWlA", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/7dISZnwsBSA/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCJq7xMMUx7ywYmEKRUw8hGUhZBBg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/7dISZnwsBSA/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBCusReY0vXShIXws6v8UtalIGkxg", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/7dISZnwsBSA/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLByBkAOQ1jy1MYmt4oEuQk1bFR_DA", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 44 seconds" + } + }, + "simpleText": "4:44" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Prinz Pi - 1,40m (feat. Philipp Dittberner) by Keine Liebe 6 years ago 4 minutes, 44 seconds" + } + }, + "runs": [ + { + "text": "Prinz Pi - 1,40m (feat. Philipp Dittberner)" + } + ] + }, + "trackingParams": "CBQQxjQYYSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "7dISZnwsBSA" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "197" + }, + "isPlayable": true, + "lengthSeconds": "253", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 13 seconds" + } + }, + "simpleText": "4:13" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CBMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "F_PPdS-PB14" + ] + } + }, + "openMiniplayer": true, + "videoId": "F_PPdS-PB14", + "videoIds": [ + "F_PPdS-PB14" + ] + }, + "clickTrackingParams": "CBMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CBMQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CBIQxjQYYiITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CBIQxjQYYiITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=F_PPdS-PB14&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=197", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 196, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "F_PPdS-PB14", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jelne7.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=17f3cf752f8f075e&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCvnCXuh_zhm75EJ89qJ95Kw", + "canonicalBaseUrl": "/c/385ideal" + }, + "clickTrackingParams": "CBIQxjQYYiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/385ideal", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "385idéal" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/F_PPdS-PB14/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCIcbTSt6Q1Xo8sqLnyEbbXSuLBcg", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/F_PPdS-PB14/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBoKMX5q6gv9BCUmABphuYY7tsBvg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/F_PPdS-PB14/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDa2DrtkKumkD-hFcRjbLTJNY-nVw", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/F_PPdS-PB14/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD7jbaxWyKvPSKClCdwDS2RIGYHZw", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 13 seconds" + } + }, + "simpleText": "4:13" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Nimo - IDÉAL (prod. von SOTT) [Official 4K Video] by 385idéal 6 years ago 4 minutes, 13 seconds" + } + }, + "runs": [ + { + "text": "Nimo - IDÉAL (prod. von SOTT) [Official 4K Video]" + } + ] + }, + "trackingParams": "CBIQxjQYYiITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "F_PPdS-PB14" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "198" + }, + "isPlayable": true, + "lengthSeconds": "173", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 53 seconds" + } + }, + "simpleText": "2:53" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CBEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "DMg9idvVY8M" + ] + } + }, + "openMiniplayer": true, + "videoId": "DMg9idvVY8M", + "videoIds": [ + "DMg9idvVY8M" + ] + }, + "clickTrackingParams": "CBEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CBEQ_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CBAQxjQYYyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CBAQxjQYYyITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=DMg9idvVY8M&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=198", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 197, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "DMg9idvVY8M", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenl6.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=0cc83d89dbd563c3&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCvnCXuh_zhm75EJ89qJ95Kw", + "canonicalBaseUrl": "/c/385ideal" + }, + "clickTrackingParams": "CBAQxjQYYyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/c/385ideal", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "385idéal" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/DMg9idvVY8M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCIg_8ZAGGj-OC9R8sh4txS_8bQHw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/DMg9idvVY8M/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBIrMCl9q3jbb6dSgBSScbwsoP-aw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/DMg9idvVY8M/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDFsDhOvx_P0ZVY_V1lAQ7hIm6kvA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/DMg9idvVY8M/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAcv8JfTKZSHOfIF3YK7WI7vLXU6w", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 53 seconds" + } + }, + "simpleText": "2:53" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Nimo - BITTER (prod. von Jimmy Torrio) [Official 4K Video] by 385idéal 6 years ago 2 minutes, 53 seconds" + } + }, + "runs": [ + { + "text": "Nimo - BITTER (prod. von Jimmy Torrio) [Official 4K Video]" + } + ] + }, + "trackingParams": "CBAQxjQYYyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "DMg9idvVY8M" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "199" + }, + "isPlayable": true, + "lengthSeconds": "218", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 38 seconds" + } + }, + "simpleText": "3:38" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CA8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CA8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "DGEmoSFI94Y" + ] + } + }, + "openMiniplayer": true, + "videoId": "DGEmoSFI94Y", + "videoIds": [ + "DGEmoSFI94Y" + ] + }, + "clickTrackingParams": "CA8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CA8Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CA4QxjQYZCITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CA4QxjQYZCITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=DGEmoSFI94Y&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=199", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 198, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "DGEmoSFI94Y", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=0c6126a12148f786&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCOiG4UoE0-CBZKlDVgw1eTA", + "canonicalBaseUrl": "/channel/UCOiG4UoE0-CBZKlDVgw1eTA" + }, + "clickTrackingParams": "CA4QxjQYZCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCOiG4UoE0-CBZKlDVgw1eTA", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Stonedeafproduction" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/DGEmoSFI94Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB2H8YGPqxgGisgCPfV-svTSrBY3g", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/DGEmoSFI94Y/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC505GDTWcRlLCh-hl5Nwq_yFc2Cg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/DGEmoSFI94Y/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB_RIUrQraaqmPKGCgjad14QpseiA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/DGEmoSFI94Y/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD0qTw3A7BauDRKqoosxSclp5S8VQ", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 38 seconds" + } + }, + "simpleText": "3:38" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "SDP - Kurz für immer bleiben by Stonedeafproduction 7 years ago 3 minutes, 38 seconds" + } + }, + "runs": [ + { + "text": "SDP - Kurz für immer bleiben" + } + ] + }, + "trackingParams": "CA4QxjQYZCITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "DGEmoSFI94Y" + } + }, + { + "playlistVideoRenderer": { + "index": { + "simpleText": "200" + }, + "isPlayable": true, + "lengthSeconds": "159", + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 39 seconds" + } + }, + "simpleText": "2:39" + }, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CA0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "actions": [ + { + "addToPlaylistCommand": { + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CA0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/playlist/create", + "sendPost": true + } + }, + "createPlaylistServiceEndpoint": { + "params": "CAQ%3D", + "videoIds": [ + "BtZufymxHvE" + ] + } + }, + "openMiniplayer": true, + "videoId": "BtZufymxHvE", + "videoIds": [ + "BtZufymxHvE" + ] + }, + "clickTrackingParams": "CA0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "signal": "CLIENT_SIGNAL" + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CA0Q_pgEGAMiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + ], + "trackingParams": "CAwQxjQYZSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CAwQxjQYZSITCJvZltiI6PoCFcTbEQgdt84KmDIKcGxwcF92aWRlb1okVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=BtZufymxHvE&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&index=200", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "index": 199, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "OAI%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "BtZufymxHvE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jelnez.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=06d66e7f29b11ef1&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1343750&mt=1666036903&oweuc=" + } + } + } + } + }, + "shortBylineText": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCGh8tmH9x9njaI2mXfh2fyg", + "canonicalBaseUrl": "/user/CrhymeTV" + }, + "clickTrackingParams": "CAwQxjQYZSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/user/CrhymeTV", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "CrhymeTV" + } + ] + }, + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/BtZufymxHvE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCNkUFpFYV3Tnk-NnRMwuHuQlxl-g", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/BtZufymxHvE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCWRZ9aUGqPi91vKUrag_X1QH2llw", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/BtZufymxHvE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAKDQ4wRayxMaFptbPLc9sAuZ6WtQ", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/BtZufymxHvE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBP1wdb50WShFPB1dLT7h49WaEUXg", + "width": 336 + } + ] + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 39 seconds" + } + }, + "simpleText": "2:39" + } + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "LX & Maxwell - Ausser Kontrolle (Jambeatz) by CrhymeTV 7 years ago 2 minutes, 39 seconds" + } + }, + "runs": [ + { + "text": "LX & Maxwell - Ausser Kontrolle (Jambeatz)" + } + ] + }, + "trackingParams": "CAwQxjQYZSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "videoId": "BtZufymxHvE" + } + }, + { + "continuationItemRenderer": { + "continuationEndpoint": { + "clickTrackingParams": "CAAQhGciEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "sendPost": true + } + }, + "continuationCommand": { + "request": "CONTINUATION_REQUEST_TYPE_BROWSE", + "token": "4qmFsgJfEiRWTFBMNWREeDY4MVQ0YlI3WkYxSXVXek92MW9tbFJiRTdQaUoaEkNBSjZCMUJVT2tOT1FVSSUzRJoCIlBMNWREeDY4MVQ0YlI3WkYxSXVXek92MW9tbFJiRTdQaUo%3D" + } + }, + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN" + } + } + ], + "targetId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ" + }, + "clickTrackingParams": "CAAQhGciEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + ], + "responseContext": { + "mainAppWebResponseContext": { + "loggedOut": true + }, + "serviceTrackingParams": [ + { + "params": [ + { + "key": "browse_id", + "value": "VLPL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ" + }, + { + "key": "logged_in", + "value": "0" + }, + { + "key": "e", + "value": "1714246,23804281,23882503,23918597,23934970,23940247,23946420,23960343,23966208,23983296,23986024,23998056,24001373,24002022,24002025,24004644,24007246,24034168,24036947,24077241,24080738,24120820,24135310,24140247,24152442,24161116,24162919,24164186,24166867,24169501,24175560,24181174,24185614,24186125,24187043,24187377,24187921,24191629,24197450,24199724,24199774,24211178,24211853,24217535,24219713,24225483,24226335,24227844,24229161,24241378,24245609,24248092,24248385,24248955,24249178,24254502,24255165,24255543,24255545,24260783,24262346,24262775,24263796,24265820,24267564,24267570,24268142,24278545,24278596,24279196,24279628,24279749,24281833,24283093,24283719,24286005,24287327,24287486,24287795,24288045,24288912,24289901,24289940,24290131,24290270,24290842,24290971,24292296,24292955,24295361,24295634,24297392,24297742,24297895,24298324,24298641,24298791,24390674,24391537,24391708,24392399,24392432,24393124,24393382,24394106,24394650,24394729,24396235,24398041,24398595,24398761,24399146,24400183,24400608,24590921,39322278,39322399,39322504,39322574" + } + ], + "service": "GFEEDBACK" + }, + { + "params": [ + { + "key": "browse_id", + "value": "VLPL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ" + } + ], + "service": "GOOGLE_HELP" + }, + { + "params": [ + { + "key": "c", + "value": "WEB" + }, + { + "key": "cver", + "value": "2.20221014.01.00" + }, + { + "key": "yt_li", + "value": "0" + }, + { + "key": "GetPlaylist_rid", + "value": "0xfbad7891f06e5389" + } + ], + "service": "CSI" + }, + { + "params": [ + { + "key": "logged_in", + "value": "0" + } + ], + "service": "GUIDED_HELP" + }, + { + "params": [ + { + "key": "client.version", + "value": "2.20221014" + }, + { + "key": "client.name", + "value": "WEB" + }, + { + "key": "client.fexp", + "value": "39322399,24292955,24391708,24169501,24080738,24166867,24279628,24283719,24002022,24279196,23918597,23960343,24396235,1714246,24298324,24248955,23946420,24298791,24295634,24286005,24219713,39322574,24399146,24034168,24225483,24590921,24199774,24181174,24288045,24265820,24290131,39322504,24077241,23804281,24281833,24152442,24267570,24255545,24001373,23966208,24226335,24254502,24392399,24161116,24393382,23882503,24187921,24217535,24295361,24298641,24185614,24394106,24297742,23986024,24211853,24394650,24278596,24120820,24036947,24199724,24248385,24290971,24268142,24187377,24164186,24227844,24278545,23998056,24191629,24229161,24398761,24260783,23934970,24289940,39322278,24263796,24398041,24241378,24400183,24290270,24267564,24175560,24187043,24400608,24249178,24211178,24135310,24279749,24287327,24292296,23983296,24007246,24390674,24289901,24255165,24140247,24004644,24290842,24297392,24393124,24162919,24255543,24392432,24398595,24262775,24288912,23940247,24197450,24287486,24248092,24287795,24002025,24262346,24283093,24394729,24245609,24391537,24186125,24297895" + } + ], + "service": "ECATCHER" + } + ], + "visitorData": "CgthUkNOYzdiYVJnMCjO7LaaBg%3D%3D", + "webResponseContextExtensionData": { + "hasDecorated": true + } + }, + "sidebar": { + "playlistSidebarRenderer": { + "items": [ + { + "playlistSidebarPrimaryInfoRenderer": { + "description": {}, + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "VISIBILITY" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "VLPL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "navigationType": "BROWSE_NAVIGATION_TYPE_LOAD_IN_PLACE", + "nofollow": true, + "params": "wgYCCAA%3D" + }, + "clickTrackingParams": "CAEQk-8CIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + }, + "text": { + "simpleText": "Show unavailable videos" + }, + "trackingParams": "CAEQk-8CIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "FLAG" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAEQk-8CIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CAoQ8FsiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 83769, + "url": "https://accounts.google.com/ServiceLogin?service=youtube&uilel=3&passive=true&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26app%3Ddesktop%26hl%3Den%26next%3D%252Fchannel%252FPL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN" + } + }, + "signInEndpoint": { + "nextEndpoint": { + "browseEndpoint": { + "browseId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ" + }, + "clickTrackingParams": "CAoQ8FsiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 6827, + "url": "/channel/PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "webPageType": "WEB_PAGE_TYPE_BROWSE" + } + } + } + } + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_BRAND", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CAoQ8FsiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "content": { + "simpleText": "Sign in to report inappropriate content." + }, + "title": { + "simpleText": "Need to report the playlist?" + } + } + } + } + }, + "text": { + "simpleText": "Report playlist" + }, + "trackingParams": "CAEQk-8CIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + } + ], + "targetId": "playlist-browse-action-menu", + "topLevelButtons": [ + { + "toggleButtonRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Save playlist" + } + }, + "defaultIcon": { + "iconType": "PLAYLIST_ADD" + }, + "defaultNavigationEndpoint": { + "clickTrackingParams": "CAgQmE0YCSITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CAkQ_IYEIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 83769, + "url": "https://accounts.google.com/ServiceLogin?service=youtube&uilel=3&passive=true&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26app%3Ddesktop%26hl%3Den%26next%3D%252Fplaylist%253Flist%253DPL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ&hl=en&ec=66428", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN" + } + }, + "signInEndpoint": { + "idamTag": "66428", + "nextEndpoint": { + "browseEndpoint": { + "browseId": "VLPL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ" + }, + "clickTrackingParams": "CAkQ_IYEIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + } + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Sign in" + }, + "trackingParams": "CAkQ_IYEIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + }, + "content": { + "simpleText": "Sign in to save this playlist." + }, + "title": { + "simpleText": "Want to save this playlist?" + } + } + } + } + }, + "defaultTooltip": "Save playlist", + "isDisabled": false, + "isToggled": false, + "size": { + "sizeType": "SIZE_DEFAULT" + }, + "style": { + "styleType": "STYLE_TEXT" + }, + "toggledAccessibilityData": { + "accessibilityData": { + "label": "Remove from Library" + } + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "toggledTooltip": "Remove from Library", + "trackingParams": "CAgQmE0YCSITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + { + "buttonRenderer": { + "accessibility": { + "label": "Shuffle play" + }, + "icon": { + "iconType": "SHUFFLE" + }, + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CAcQ8FsYCiITCJvZltiI6PoCFcTbEQgdt84KmFokVkxQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlKmgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=BixqbSRjY2Y&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "params": "CM09IBo%3D", + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "BixqbSRjY2Y", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=062c6a6d24636366&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_TEXT", + "tooltip": "Shuffle play", + "trackingParams": "CAcQ8FsYCiITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + }, + { + "buttonRenderer": { + "accessibility": { + "label": "Share" + }, + "icon": { + "iconType": "SHARE" + }, + "isDisabled": false, + "serviceEndpoint": { + "clickTrackingParams": "CAUQ8FsYCyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/share/get_share_panel", + "sendPost": true + } + }, + "shareEntityServiceEndpoint": { + "commands": [ + { + "clickTrackingParams": "CAUQ8FsYCyITCJvZltiI6PoCFcTbEQgdt84KmA==", + "openPopupAction": { + "beReused": true, + "popup": { + "unifiedSharePanelRenderer": { + "showLoadingSpinner": true, + "trackingParams": "CAYQjmIiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "popupType": "DIALOG" + } + } + ], + "serializedShareEntity": "EiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "tooltip": "Share", + "trackingParams": "CAUQ8FsYCyITCJvZltiI6PoCFcTbEQgdt84KmA==" + } + } + ], + "trackingParams": "CAEQk-8CIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CAEQk-8CIhMIm9mW2Ijo-gIVxNsRCB23zgqYWiRWTFBMNWREeDY4MVQ0YlI3WkYxSXVXek92MW9tbFJiRTdQaUqaAQMQ-iw=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=zMPIobcM2j0&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "zMPIobcM2j0", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeened.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=ccc3c8a1b70cda3d&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "showMoreText": { + "runs": [ + { + "text": "Show more" + } + ] + }, + "stats": [ + { + "runs": [ + { + "text": "496" + }, + { + "text": " videos" + } + ] + }, + { + "simpleText": "3,575,245 views" + }, + { + "runs": [ + { + "text": "Last updated on " + }, + { + "text": "Sep 1, 2022" + } + ] + } + ], + "thumbnailOverlays": [ + { + "thumbnailOverlaySidePanelRenderer": { + "icon": { + "iconType": "PLAY_ALL" + }, + "text": { + "simpleText": "PLAY ALL" + } + } + } + ], + "thumbnailRenderer": { + "playlistVideoThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 94, + "url": "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDyvpFGBDtaeOjr_CgauQuykb-2vw", + "width": 168 + }, + { + "height": 110, + "url": "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDoQAKVizNWaDGfCYZWjwsIdO0LHg", + "width": 196 + }, + { + "height": 138, + "url": "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLD-mpSGdw3SsUFVGhXq6JZ98_aQTA", + "width": 246 + }, + { + "height": 188, + "url": "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLCIsW1YLB30e0ac-Ag09Rr22F7MAA", + "width": 336 + } + ] + }, + "trackingParams": "CAsQy-wJIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CAEQk-8CIhMIm9mW2Ijo-gIVxNsRCB23zgqYWiRWTFBMNWREeDY4MVQ0YlI3WkYxSXVXek92MW9tbFJiRTdQaUqaAQMQ-iw=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 3832, + "url": "/watch?v=zMPIobcM2j0&list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "webPageType": "WEB_PAGE_TYPE_WATCH" + } + }, + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTDVkRHg2ODFUNGJSN1pGMUl1V3pPdjFvbWxSYkU3UGlK" + } + }, + "playlistId": "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "videoId": "zMPIobcM2j0", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeened.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=ccc3c8a1b70cda3d&ip=2003%3Ade%3Aaf03%3A6b00%3Acd99%3A73c%3A5d32%3A24f6&initcwndbps=1338750&mt=1666036903&oweuc=" + } + } + } + } + }, + "text": "Die schönsten deutschen Lieder | Beliebteste Lieder | Beste Deutsche Musik 2022" + } + ] + } + } + }, + { + "playlistSidebarSecondaryInfoRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CAIQ8FsiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CAMQ_YYEIhMIm9mW2Ijo-gIVxNsRCB23zgqYMglzdWJzY3JpYmU=", + "commandMetadata": { + "webCommandMetadata": { + "rootVe": 83769, + "url": "https://accounts.google.com/ServiceLogin?service=youtube&uilel=3&passive=true&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26app%3Ddesktop%26hl%3Den%26next%3D%252Fplaylist%253Flist%253DPL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ%26continue_action%3DQUFFLUhqa0c1NHBJMkJEaE9RSklTOC1DeWsxZTZVazVad3xBQ3Jtc0ttRnZlZnlqSlFJQW1WbGFGNzBfMVFSOEJnaFZTemV3Tl9KZDlUbW9BUWFUeTFNa1lpd1dIU3MzMjRwT01wN0tXYVpERFpQVDN4UnBwUDBGVHkyWk1aMzN2NGYtVzFLVGpUS2ZOdGdkNk9ZMmE1SjJpdUY5ZFkyVnFrUkVYU3luOUdVLUFvOGk4SDVnRk5LX05ndTVTN1ExZlZRSTljTlBmYVZKVEdmRkdaVnUwaDZIcXJOamo5VFRTUGxfYmYxVXRWMGxGbmxMeDNXdlF2RkVrNFVUNVpucThjSkZn&hl=en&ec=66429", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN" + } + }, + "signInEndpoint": { + "continueAction": "QUFFLUhqa0c1NHBJMkJEaE9RSklTOC1DeWsxZTZVazVad3xBQ3Jtc0ttRnZlZnlqSlFJQW1WbGFGNzBfMVFSOEJnaFZTemV3Tl9KZDlUbW9BUWFUeTFNa1lpd1dIU3MzMjRwT01wN0tXYVpERFpQVDN4UnBwUDBGVHkyWk1aMzN2NGYtVzFLVGpUS2ZOdGdkNk9ZMmE1SjJpdUY5ZFkyVnFrUkVYU3luOUdVLUFvOGk4SDVnRk5LX05ndTVTN1ExZlZRSTljTlBmYVZKVEdmRkdaVnUwaDZIcXJOamo5VFRTUGxfYmYxVXRWMGxGbmxMeDNXdlF2RkVrNFVUNVpucThjSkZn", + "idamTag": "66429", + "nextEndpoint": { + "browseEndpoint": { + "browseId": "VLPL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ" + }, + "clickTrackingParams": "CAMQ_YYEIhMIm9mW2Ijo-gIVxNsRCB23zgqY", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 5754, + "url": "/playlist?list=PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST" + } + } + } + } + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_BLUE_TEXT", + "text": { + "simpleText": "Sign in" + }, + "trackingParams": "CAMQ_YYEIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + }, + "content": { + "simpleText": "Sign in to subscribe to this channel." + }, + "title": { + "simpleText": "Want to subscribe to this channel?" + } + } + } + } + }, + "size": "SIZE_DEFAULT", + "style": "STYLE_DESTRUCTIVE", + "text": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "trackingParams": "CAIQ8FsiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + }, + "videoOwner": { + "videoOwnerRenderer": { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCIekuFeMaV78xYfvpmoCnPg", + "canonicalBaseUrl": "/channel/UCIekuFeMaV78xYfvpmoCnPg" + }, + "clickTrackingParams": "CAQQ4TkiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCIekuFeMaV78xYfvpmoCnPg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "thumbnail": { + "thumbnails": [ + { + "height": 48, + "url": "https://yt3.ggpht.com/ytc/AMLnZu_DBHNd5mmXtxHF4GA3jtpb4al4CwwWCgxkgOGL=s48-c-k-c0x00ffffff-no-rj", + "width": 48 + }, + { + "height": 88, + "url": "https://yt3.ggpht.com/ytc/AMLnZu_DBHNd5mmXtxHF4GA3jtpb4al4CwwWCgxkgOGL=s88-c-k-c0x00ffffff-no-rj", + "width": 88 + }, + { + "height": 176, + "url": "https://yt3.ggpht.com/ytc/AMLnZu_DBHNd5mmXtxHF4GA3jtpb4al4CwwWCgxkgOGL=s176-c-k-c0x00ffffff-no-rj", + "width": 176 + } + ] + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseId": "UCIekuFeMaV78xYfvpmoCnPg", + "canonicalBaseUrl": "/channel/UCIekuFeMaV78xYfvpmoCnPg" + }, + "clickTrackingParams": "CAQQ4TkiEwib2ZbYiOj6AhXE2xEIHbfOCpg=", + "commandMetadata": { + "webCommandMetadata": { + "apiUrl": "/youtubei/v1/browse", + "rootVe": 3611, + "url": "/channel/UCIekuFeMaV78xYfvpmoCnPg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL" + } + } + }, + "text": "Best Music" + } + ] + }, + "trackingParams": "CAQQ4TkiEwib2ZbYiOj6AhXE2xEIHbfOCpg=" + } + } + } + } + ], + "trackingParams": "CAEQk-8CIhMIm9mW2Ijo-gIVxNsRCB23zgqY" + } + }, + "trackingParams": "CAAQhGciEwib2ZbYiOj6AhXE2xEIHbfOCpg=" +} diff --git a/testfiles/video_details/recommendations_empty.json b/testfiles/video_details/recommendations_empty.json deleted file mode 100644 index d7d28fe..0000000 --- a/testfiles/video_details/recommendations_empty.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "responseContext": { - "visitorData": "CgthSmp5T24zQkRjTSiom5WaBg%3D%3D", - "serviceTrackingParams": [ - { - "service": "CSI", - "params": [ - { - "key": "c", - "value": "WEB" - }, - { - "key": "cver", - "value": "2.20221006.09.00" - }, - { - "key": "yt_li", - "value": "0" - }, - { - "key": "GetWatchNext_rid", - "value": "0x8836d1dc393da349" - } - ] - }, - { - "service": "GFEEDBACK", - "params": [ - { - "key": "logged_in", - "value": "0" - }, - { - "key": "e", - "value": "1714258,23804281,23882503,23885487,23918597,23934970,23940248,23946420,23966208,23983296,23986022,23998056,24001373,24002022,24002025,24004644,24007246,24034168,24036948,24077241,24080738,24108448,24120820,24135310,24140247,24152443,24161116,24162920,24164186,24166867,24169501,24181174,24185614,24187043,24187377,24191629,24197450,24199724,24199774,24211178,24217535,24219713,24223903,24224266,24225483,24226335,24227844,24228638,24229161,24241378,24243988,24248092,24248385,24254502,24255543,24255545,24256985,24259938,24260783,24262346,24263796,24265820,24267564,24267570,24268142,24268812,24268870,24278546,24278596,24279196,24279628,24279727,24280997,24281835,24282957,24283093,24283280,24286003,24286019,24287326,24287795,24288045,24289478,24289901,24289939,24290131,24290276,24290971,24292296,24295099,24295740,24297099,24298640,24298651,24298795,24299688,24299747,24390674,24391537,24392058,24392269,24394618,24590921,39322278,39322399,39322505" - } - ] - }, - { - "service": "GUIDED_HELP", - "params": [ - { - "key": "logged_in", - "value": "0" - } - ] - }, - { - "service": "ECATCHER", - "params": [ - { - "key": "client.version", - "value": "2.20221006" - }, - { - "key": "client.name", - "value": "WEB" - }, - { - "key": "client.fexp", - "value": "24286003,24298795,24256985,23804281,24001373,23946420,24283280,24289478,24223903,24298651,24286019,23885487,24077241,24265820,23918597,24255545,24036948,24259938,24279196,24199774,24282957,24279628,24268812,24169501,24225483,24590921,24197450,24298640,39322399,24290971,24108448,24287326,24219713,24278596,24002022,24181174,24227844,24287795,24229161,24283093,24162920,24248092,24241378,24166867,24002025,24280997,24391537,24278546,24288045,24034168,24290131,24211178,24289901,24226335,24268870,24295099,24135310,24191629,24394618,24007246,24004644,24243988,24281835,24392058,23998056,24185614,24262346,24187043,24224266,23986022,24228638,23934970,39322278,24292296,24260783,23940248,24263796,24267564,24299688,24390674,24152443,23966208,24267570,24080738,24290276,24217535,23882503,24279727,24164186,24289939,24187377,24268142,24120820,24199724,39322505,24392269,24254502,24255543,24299747,24161116,24140247,1714258,24297099,23983296,24295740,24248385" - } - ] - } - ], - "mainAppWebResponseContext": { - "loggedOut": true - }, - "webResponseContextExtensionData": { - "hasDecorated": true - } - }, - "trackingParams": "CAAQg2ciEwjfruPhg9j6AhXW2BEIHd9wAwc=", - "engagementPanels": [ - { - "engagementPanelSectionListRenderer": { - "content": { - "adsEngagementPanelContentRenderer": { - "hack": true - } - }, - "targetId": "engagement-panel-ads", - "visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN", - "loggingDirectives": { - "trackingParams": "CAEQ040EGAAiEwjfruPhg9j6AhXW2BEIHd9wAwc=", - "visibility": { - "types": "12" - }, - "enableDisplayloggerExperiment": true - } - } - } - ] -} diff --git a/tests/youtube.rs b/tests/youtube.rs index 71a4358..232ab3d 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -7,7 +7,7 @@ use rustypipe::client::{ClientType, RustyPipe}; use rustypipe::error::{Error, ExtractionError}; use rustypipe::model::richtext::ToPlaintext; use rustypipe::model::{ - AudioCodec, AudioFormat, Channel, SearchItem, UrlTarget, Verification, VideoCodec, VideoFormat, + AudioCodec, AudioFormat, Channel, UrlTarget, Verification, VideoCodec, VideoFormat, YouTubeItem, }; use rustypipe::param::{ search_filter::{self, SearchFilter}, @@ -75,7 +75,7 @@ async fn get_player_from_client(#[case] client_type: ClientType) { assert_eq!(video.codec, VideoCodec::Vp9); assert_approx(audio.bitrate as f64, 130685.0); - assert_eq!(audio.average_bitrate, 129496); + assert_approx(audio.average_bitrate as f64, 129496.0); assert_eq!(audio.size, 4193863); assert_eq!(audio.mime, "audio/mp4; codecs=\"mp4a.40.2\""); assert_eq!(audio.format, AudioFormat::M4a); @@ -154,7 +154,7 @@ async fn get_player_from_client(#[case] client_type: ClientType) { #[case::live( "86YLFOog4GM", "🌎 Nasa Live Stream - Earth From Space : Live Views from the ISS", - "Live NASA - Views Of Earth from Space", + "The station is crewed by NASA astronauts as well as Russian Cosmonauts", 0, "UCakgsb0w7QB0VHdnCc-OVEA", "Space Videos", @@ -701,7 +701,7 @@ async fn get_video_details_live() { ); let desc = details.description.to_plaintext(); assert!( - desc.contains("Live NASA - Views Of Earth from Space"), + desc.contains("The station is crewed by NASA astronauts as well as Russian Cosmonauts"), "bad description: {}", desc ); @@ -896,7 +896,7 @@ async fn channel_videos(#[case] order: ChannelOrder) { } ChannelOrder::Popular => { assert!( - first_video.view_count > 2300000, + first_video.view_count.unwrap() > 2300000, "most popular video < 2.3M views" ) } @@ -984,6 +984,7 @@ fn assert_channel_eevblog(channel: &Channel) { channel.subscriber_count.unwrap() ); assert!(!channel.avatar.is_empty(), "got no thumbnails"); + assert_eq!(channel.verification, Verification::Verified); assert_eq!(channel.description, "NO SCRIPT, NO FEAR, ALL OPINION\nAn off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers\nHosted by Dave Jones from Sydney Australia\n\nDONATIONS:\nBitcoin: 3KqyH1U3qrMPnkLufM2oHDU7YB4zVZeFyZ\nEthereum: 0x99ccc4d2654ba40744a1f678d9868ecb15e91206\nPayPal: david@alternatezone.com\n\nPatreon: https://www.patreon.com/eevblog\n\nEEVblog2: http://www.youtube.com/EEVblog2\nEEVdiscover: https://www.youtube.com/channel/UCkGvUEt8iQLmq3aJIMjT2qQ\n\nEMAIL:\nAdvertising/Commercial: eevblog+business@gmail.com\nFan mail: eevblog+fan@gmail.com\nHate Mail: eevblog+hate@gmail.com\n\nI DON'T DO PAID VIDEO SPONSORSHIPS, DON'T ASK!\n\nPLEASE:\nDo NOT ask for personal advice on something, post it in the EEVblog forum.\nI read ALL email, but please don't be offended if I don't have time to reply, I get a LOT of email.\n\nMailbag\nPO Box 7949\nBaulkham Hills NSW 2153\nAUSTRALIA"); assert!(!channel.tags.is_empty(), "got no tags"); assert_eq!( @@ -1156,13 +1157,13 @@ async fn search_filter_entity(#[case] entity: search_filter::Entity) { assert!(!result.items.is_exhausted()); result.items.items.iter().for_each(|item| match item { - SearchItem::Video(_) => { + YouTubeItem::Video(_) => { assert_eq!(entity, search_filter::Entity::Video); } - SearchItem::Channel(_) => { + YouTubeItem::Channel(_) => { assert_eq!(entity, search_filter::Entity::Channel); } - SearchItem::Playlist(_) => { + YouTubeItem::Playlist(_) => { assert_eq!(entity, search_filter::Entity::Playlist); } });